我正在将服务器迁移到新的基础设施,必须重新设置 LDAP。它不用于访问服务器,而是作为我们网站上的用户存储库,供我们的 BI 平台访问。
LDAP 已启动并运行,我可以从办公室的计算机使用 LDAP 管理员进行连接和绑定,不用担心。
我无法让 Drupal(在同一台服务器上)或 YellowFin(位于同一集群的不同服务器上的 Java 应用程序)进行绑定。我很确定它们正在连接,但没有绑定,而且我在这三个地方使用的凭据完全相同。
我从 Drupal 得到的唯一错误是:
Failed to bind to server. ldap error #82 Success
Yellowfin 提供了更多信息(我认为是;识别数据已删除):
YF:2015-05-08 01:54:26:DEBUG (LDAPUtil:createConnection) - Opening connection to xx.xx.xx.xx on port 636
YF:2015-05-08 01:54:26:DEBUG (JNDILDAPProvider:authenticate) - Connecting: ldaps://xx.xx.xx.xx:636
YF:2015-05-08 01:54:26:DEBUG (JNDILDAPProvider:authenticate) - User: cn=admin,dc=xxxxxxxxxxx,dc=com,dc=au
YF:2015-05-08 01:54:26:ERROR (LDAPUtil:createConnection) - LDAP authentication failed
YF:2015-05-08 01:54:26:ERROR (LDAPUtil:createConnection) - LDAP authentication failed
YF:2015-05-08 01:54:26:ERROR (LDAPUtil:testConnection) - LDAP connection failed
YF:2015-05-08 01:54:26:DEBUG (DSTCache:getJavaTimeZoneID) - Invalid TimeZoneCode passed. Value was ASIA/ABU_DHABI
YF:2015-05-08 01:54:27:DEBUG (MIImageAction:execute) - MIImageAction entered
我想知道时区错误是否是一个问题?
slapd服务正在监听所有IP的636端口,相关netstat
结果:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:636 0.0.0.0:* LISTEN 9150/slapd
tcp6 0 0 :::636 :::* LISTEN 9150/slapd
我们正在使用 AWS,并且我尝试在端口 636 上完全打开安全组(防火墙),但没有结果。
ldap.conf 如下所示:
# See ldap.conf(5) for details
# This file should be world readable but not world writable.
BASE dc=intermedium,dc=com,dc=au
#URI ldap://ldap.example.com ldap://ldap-master.example.com:666
URI ldap://127.0.0.1 ldaps://xxxxxxxxxxxxxxxxx
#SIZELIMIT 12
#TIMELIMIT 15
#DEREF never
TLS_CACERTDIR /etc/openldap/certs
TLSCACertificateFile /etc/pki/tls/certs/xxxxxxxxxxxxxxxxx.ca-bundle
TLSCertificateFile /etc/pki/tls/certs/xxxxxxxxxxxxxxxxx.crt
TLSCertificateKeyFile /etc/pki/tls/certs/xxxxxxxxxxxxxxxxx.key
TLS_REQCERT allow
REFERRALS off
# Turning this off breaks GSSAPI used with krb5 when rdns = false
#SASL_NOCANON on
slapd.conf 如下所示:
# OpenLDAP server configuration
# see 'man slapd' for additional information
# Where the server will run (-h option)
# - ldapi:/// is required for on-the-fly configuration using client tools
# (use SASL with EXTERNAL mechanism for authentication)
# - default: ldapi:/// ldap:///
# - example: ldapi:/// ldap://127.0.0.1/ ldap://10.0.0.1:1389/ ldaps:///
SLAPD_URLS="ldapi:/// ldaps:///"
# Any custom options
#SLAPD_OPTIONS=""
# Keytab location for GSSAPI Kerberos authentication
#KRB5_KTNAME="FILE:/etc/openldap/ldap.keytab"
如有任何建议,我将非常感激。
答案1
非常感谢@strongline 和@Craig Miskell 为我指明方向,最后我发现了两个不同的错误,我会把它们放在这里,以防别人觉得有用。
Drupal:
绑定失败是因为源站点启用了 Blowfish 加密,而目标服务器没有安装 php-mcrypt mod,即使我更新了密码,它仍然尝试使用 Blowfish 加密作为绑定密码。安装 php-mcrypt 解决了这个问题。
YellowFin (Java):
YellowFin 需要 Java Keystore 中的 LDAP 服务器证书和证书链。要修复此问题,请找到或为 LDAP 服务器创建证书,然后按照这个 Stack Overflow 上的答案。
答案2
关于 Java 应用程序的时区问题,不要让 Kava 在 Linux 上确定自己的时区。请改用 TZ。我已在博客中进一步讨论了这个问题http://distracted-it.blogspot.co.nz/2014/09/dont-let-java-on-linux-determine-its.html