具有Liferay的LDAP-存在的未知主机

时间:2019-04-26 13:43:06

标签: ldap liferay openldap

我必须将LDAP与两个不同的服务集成:exoPlatform和Liferay。因此,我通过具有以下配置的Docker映像设置了LDAP服务器:

  • 服务器名称:openldap
  • 基本提供者URL:ldap:// openldap:389
  • 基本DN:cn = users,ou = Platform,o = acme,dc = example,dc = org

我的管理员帐户是: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:

  • 一个包含图像openldapphpldapadminexoPlatformmysql1的图片
  • 一个包含liferaymysql2图片的图片

我也支持公司代理,但我不记得对exoPlatform做过任何特别的事情。 我只是将exoPlatform和Liferay图片的代理设置添加到Catalina Tomcat中。

此外,我已经在Liferay控制面板中使用enabled将LDAP身份验证设置为Bind method

1 个答案:

答案 0 :(得分:2)

这是容器之间的网络问题,exoPlatform可以工作,但Liferay不能,因为指定的主机 openldap 在其自己的容器中不存在,并且389端口可能无法从那里访问。

您可以通过从Liferay容器运行以下命令来快速检查而不运行java / ldap:

telnet openldap 389

它可能会输出“网络不可达”,在这种情况下,您需要创建一个网络并将容器连接到该网络>>> How to communicate between Docker containers via "hostname"