【问题标题】:LDAP with Liferay - Unknown host where exists带有 Liferay 的 LDAP - 存在的未知主机
【发布时间】:2019-04-26 13:43:05
【问题描述】:

我必须将 LDAP 与两种不同的服务集成:exoPlatform 和 Liferay。所以我通过 Docker 镜像设置了一个 LDAP 服务器,配置如下:

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

我的管理员帐号只是:cn=a​​dmin

使用 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 做过什么特别的事情。 我只是为我的 exoPlatform 和 Liferay 图像添加了代理设置到 Catalina Tomcat。

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

【问题讨论】:

  • Root exception is java.net.UnknownHostException: openldap。你可以启用任何东西,但如果 Liferay 看不到 LDAP 服务器,它就无法对该配置进行操作。检查您的 docker 设置并确保您的 Liferay 容器可以看到您的 OpenLDAP 容器。

标签: ldap liferay openldap


【解决方案1】:

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

您可以在不运行 java/ldap 的情况下通过 Liferay 容器运行以下命令进行快速检查:

telnet openldap 389

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

【讨论】:

  • 谢谢@ericlavault 我只需要在我的 docker-compose 文件中添加一个网络并在它们之间创建一个桥梁
猜你喜欢
  • 1970-01-01
  • 2013-03-10
  • 2014-06-21
  • 2012-05-19
  • 1970-01-01
  • 2012-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多