我必须将LDAP与两个不同的服务集成:exoPlatform和Liferay。所以我通过这些配置的Docker镜像设置了LDAP服务器:
我的管理员帐户只是:cn = admin
使用exoPlatform,它工作正常,我可以使用我的LDAP帐户登录。这里是picketlink-idm-openldap-config.xml中的配置:
<option>
<name>providerURL</name>
<value>ldap://openldap:389</value>
</option>
<option>
<name>adminDN</name>
<value>cn=admin,dc=example,dc=org</value>
</option>
<option>
<name>adminPassword</name>
<value>admin</value>
</option>
但对于Liferay,它告诉我主人不知道... Unable to bind to the LDAP server
liferay | javax.naming.CommunicationException: openldap:389 [Root exception is java.net.UnknownHostException: openldap]
Caused by: java.net.UnknownHostException: openldap
我不知道它是否相关,但我会说它以防万一,我有2个不同的docker-compose,我同时启动:
openldap
,phpldapadmin
,exoPlatform
和mysql1
liferay
和mysql2
图像我也支持公司代理,但我不记得为exoPlatform做了什么特别的事。我只是将代理设置添加到Catalina Tomcat以获取我的exoPlatform和Liferay图像。
另外,我已经使用enabled
在Liferay控制面板中为Bind method
设置了LDAP身份验证。
这是容器之间的网络问题,exoPlatform可以工作,但Liferay不会,因为指定的主机openldap不存在于自己的容器中,并且389端口可能无法从那里访问。
通过从Liferay容器运行以下命令,您可以快速检查而无需运行java / ldap:
telnet openldap 389
它可能会输出“网络无法访问”,在这种情况下,您需要创建一个网络并将容器连接到该网络>>> How to communicate between Docker containers via "hostname"