By default, the OpenDJ LDAP directory server password policy is set to reject encrypted passwords.
So when adding or importing data with encrypted passwords, the server returns some error like this:

LDAP: error code 53 – Pre-encoded passwords are not allowed for the password attribute userPassword
Read more »

1. 方案一

  • 调用 OpenIDM REST API 管理组织、用户(CRUD,需要开发)。
  • 通过 OpenIDM Core Service 推送数据到 OpenDJ(LDAP)、业务系统数据库。
  • 需要至少提供两台 Linux(RHEL6)主机,增加的系统服务有 OpenDJ、OpenIDM、OpenAM、MySQL、身份管理 Web 服务。
  • OpenDJ 和 MySQL 在一台机器(做数据备份),其余在另外一台。OpenDJ 和 OpenAM 交叉 HA。

Read more »

在正式的企业场景中,组织一般具有父子关系。我们来看一下在这种情况下,OpenIDM 如何配置。

1. 增加新的类型 organizationUnit

在 openidm/conf/managed.json 中增加

{
    "name" : "organizationUnit"
}

查询 organizationUnit

# curl \
--header "X-OpenIDM-Username: openidm-admin" \
--header "X-OpenIDM-Password: openidm-admin" \
http://openam.example.com:9090/openidm/managed/organizationUnit/?_query-id=query-all-ids

结果

{"query-time-ms":6,"result":[]}
Read more »

停止 MySQL 服务,运行

# mysqld_safe --skip-grant-tables >/dev/null 2>&1 &
# mysql -u root mysql
mysql> update user set password = Password('new password') where User = 'root';
mysql> flush privileges;
mysql> exit;
# killall mysqld;
Read more »

1. 使用默认的类型 user

在安装完成以后,使用下边的方法查看 OpenIDM 仓库的中所有用户

# curl \
--header "X-OpenIDM-Username: openidm-admin" \
--header "X-OpenIDM-Password: openidm-admin" \
http://openam.example.com:9090/openidm/managed/user/?_query-id=query-all-ids

返回的 JSON 显示结果为空。

{"query-time-ms":1,"result":[]}
Read more »

确认 Java 环境,需要 update 24 以上版本。

# java -version
java version "1.6.0_31"
Java(TM) SE Runtime Environment (build 1.6.0_31-b04)
Java HotSpot(TM) 64-Bit Server VM (build 20.6-b01, mixed mode)

下载

# wget http://download.forgerock.org/downloads/openidm/snapshot/openidm-2.1.0-SNAPSHOT.zip
Read more »

在开始 Maven 之前,需要先引入一个包,这个包的作用和原来的 Agent 的功能是一样的。这个包需要自己从源码编译,
mvn install 或者 mvn deploy 加入到自己的仓库中。这样在 pom.xml 中可以引入

<dependency>
    <groupId>com.sun.identity.provider</groupId>
    <artifactId>opensso-springsecurity</artifactId>
    <version>0.2</version>
</dependency>

确保 AMConfig.properties 和 applicationContext-security.xml 里的 OpenAM 相关配置正确。

com.sun.identity.loginurl=http://openam.example.com:8080/openam/UI/Login

然后运行 mvn package,打包以后放到 Tomcat 运行。这里要确认没有配置 Tomcat Agent
的全局 OpenAM Filter,这里也不需要在项目的 web.xml 中增加 Filter 配置。
完整的代码在 Github

在 Agent 安装完成之后,可以使用自带的 agentsample 应用登录。这里主要讲一下如何在 SSO
之后拿到 SSOToken,以及相关 Session 信息的获取。完整的代码在 Github

Agent 的安装在上一篇已经介绍,这里需要先配置一个 Policies,然后在客户端项目 web.xml 中加入

<filter>
    <filter-name>Agent</filter-name>
    <display-name>Agent</display-name>
    <description>SJS Access Manager Tomcat Policy Agent Filter</description>
    <filter-class>com.sun.identity.agents.filter.AmAgentFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>Agent</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>INCLUDE</dispatcher>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>ERROR</dispatcher>
</filter-mapping>
Read more »

本文参照 Installing the Apache Tomcat Policy Agent,在开始之前必须停止 Tomcat。

在 OpenAM 中配置 Tomcat Agent

登录 OpenAM,Access Control - Top Level Realm - Agents - J2EE,在 Agent 下边点击按钮 New

Name: tomcatAgent
Password: 123456
Configuration: Centralized
Server URL: http://openam.example.com:8080/openam
Agent URL: http://website.example.com:8080/agentapp
Read more »
0%