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

标签 ldap liferay openldap

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

  • 服务器名称:openldap
  • 基础提供商网址: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,它告诉我主机未知...... 无法绑定(bind)到 LDAP 服务器 莱弗雷 | javax.naming.CommunicationException: openldap:389 [根异常是 java.net.UnknownHostException: openldap] 引起原因:java.net.UnknownHostException:openldap

我不知道它是否相关,但无论如何我都会说以防万一,我同时启动了 2 个不同的 docker-compose:

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

我也是一家公司代理的幕后黑手,但我不记得为 exoPlatform 做过什么特别的事情。 我只是将我的 exoPlatform 和 Liferay 图像的代理设置添加到 Catalina Tomcat。

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

最佳答案

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

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

telnet openldap 389

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

关于带有 Liferay 的 LDAP - 存在未知主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55868967/

相关文章:

authentication - 无法从 jenkins 连接到 ldap

java - 从 Java 获取 LDAP (OpenDS) 中的附加响应代码

JAVA LDAP 错误 javax.naming.NamingException : [LDAP: error code 1 - 000004DC: LdapErr: DSID-0C09075A

iframe - 嵌入 Liferay 站点,因为 iframe 在外部站点上不起作用

从 openLDAP 客户端到 IBM LDAP 的 ssl 连接

linux - 本地连接的 Ldap 配置文件。

c# - C# 新手。你调用的对象是空的。 nJupiter LDAP

javascript - AJAX调用liferay门户

javascript - 如何替换javascript中多次出现的字符串?

ssl - OpenLDAP - 为 LDAP TLS 连接启用 CRL 检查