问题描述
如何将符合 LDAPv3 的目录服务 OpenDJ 设置为访问管理解决方案 OpenAM 的外部身份存储?
解决方法
免责声明:这个答案只能作为一个起点,因为经过两天的挖掘,我找不到关于这个主题的任何好的信息。正如伯恩哈德在评论中指出的那样,您例如不应在生产中使用用户 RootDN。
- 使用 docker 启动这两个服务:
version: "3.4"
services:
openam:
image: openidentityplatform/openam
container_name: am
hostname: openam.example.com
network_mode: host
ports:
- 8080:8080
opendj:
image: openidentityplatform/opendj
container_name: dj
hostname: cts.example.com
network_mode: host
user: root
ports:
- 1389:1389
- 将以下行添加到您的
/etc/hosts
文件中:
127.0.0.1 localhost openam.example.com cts.example.com
- 在
docker-compose up -d
文件所在的文件夹中运行docker-compose.yml
。 - 等待两个服务都启动。然后运行
docker exec -it dj /bin/bash
以启动 OpenDJ 容器的交互模式。 OpenDJ 图像已经带有预配置的身份存储。要检索用于配置 OpenAM 的所有相关信息,请输入容器 (opendj
) 中的cd opendj
文件夹并运行:
$ bin/status --bindDN "cn=Directory Manager" --bindPassword password
--- Connection Handlers ---
Address:Port : Protocol : State
-------------:----------:---------
-- : LDIF : Disabled
0.0.0.0:636 : LDAPS : Disabled
0.0.0.0:1389 : LDAP : Enabled
0.0.0.0:1689 : JMX : Disabled
0.0.0.0:8080 : HTTP : Disabled
--- Data Sources ---
Base DN: dc=example,dc=com
Backend ID: userRoot
Entries: 203
Replication:
有关上述更多命令以及自行配置服务器的信息,请查看 OpenDJ's community How To。
-
打开浏览器并转到
http://openam.example.com:8080/openam
。如果您在无头 VM 上运行,请查看我的这个 Stackoverflow question,因为我遇到了同样的问题。 -
接受条款并点击“继续”。当提示输入默认用户 [amAdmin] 的密码时,输入例如OpenAM 的 amAdmin 的默认密码
changeit
并点击“下一步”: -
在“服务器设置”选项卡中,保留除 cookie 域之外的所有内容。将 cookie 域更改为
.example.com
,然后单击“下一步”。 -
不要更改“配置存储”选项卡中的任何内容,然后单击“下一步”。
-
在“用户存储”选项卡中输入已配置的 OpenDJ 服务器的信息、OpenDJ 服务器的默认密码
password
以及 {{1} 中设置的目录名称cts.example.com
}} 文件,然后单击“下一步”: -
不要更改“站点配置”选项卡中的任何内容,然后单击“下一步”。
-
在“代理信息”选项卡中输入密码(例如
docker-compose.yml
),然后单击下一步。 -
完成!
要检查您的工作,请以用户 password
的身份登录 OpenAM,并使用先前设置的密码 amadmin
。然后转到changeit
:
注意:在您的情况下,您只会看到用户“管理员”和“匿名”,因为您尚未填充身份存储。
按照forgerock目录服务器和forgerock AM的官方文档,即使在付费版本中仍然以相同的方式配置。