带Liferay的LDAP - 存在未知主机

问题描述 投票:2回答:1

我必须将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做了什么特别的事。我只是将代理设置添加到Catalina Tomcat以获取我的exoPlatform和Liferay图像。

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

ldap liferay openldap
1个回答
2
投票

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

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

telnet openldap 389

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

© www.soinside.com 2019 - 2024. All rights reserved.