搜索 CN 时 Zend_Ldap 出现异常

Exception in Zend_Ldap when searching for a CN

我在 Windows 2012 R2 上搜索 Zend_Ldap (Zend_Framework 1.12) 和 PHP 5.6.24 时遇到了一个奇怪的问题。基本上,我发送 LDAP 搜索 DN:

CN=ABUsers,CN=Users,DC=escenterprise,DC=net

与有效的 LDAP 用户成功绑定后。此 Wireshark 跟踪证实了这一点:

我在跟踪中发现奇怪的是我得到了对我的搜索查询的正确响应,其中包括我定位的 CN 中的用户。但是,PHP LDAP 扩展(php_ldap.dll,v5.6.24.0)并没有 returning 该搜索结果,而是尝试使用 ROOT 用户对以下 CN 进行 3 次额外绑定:

这些绑定似乎成功了;然而,以下对 3 CN 的额外搜索均失败,并显示以下错误消息:

0x1 (Operations error; 000004DC: LdapErr: DSID-0C090752, comment:
In order to perform this operation a successful bind must be completed on the
connection., data 0, v2580): searching:
(&(objectclass=user)(memberOf:1.2.840.113556.1.4.1941:=CN=ABUsers,CN=Users,dc=escenterprise,dc=net))

我知道 3 CN 包含在对我的第一个查询的响应中。但是,我很难理解为什么首先会进行 3 次额外搜索,以及 3 次绑定为 ROOT。

这个问题只发生在一个测试环境中,它的配置方式与我的其他测试环境相同,一切正常,也就是说,Zend_Ldap 不会 return 异常执行同样的搜索,它不搜索 3 个额外的 CN。 如果这可能有帮助,则出现问题的测试环境位于 LDAP 服务器所在网络之外的数据中心,并通过 VPN 连接到它。其他测试环境与 LDAP 服务器在同一栋楼里。

知道为什么会在特定环境中发生这种情况吗?我怎样才能避免它?

非常感谢!

我在位于我的一个数据中心的测试环境中遇到了这个问题。结果是我的 PHP 设置将 optReferrals 更改为 TRUE。这适用于本地环境,但不适用于我网络之外的任何环境。确保设置默认为 FALSE 后,它工作正常,我没有看到任何 "ROOT" 绑定。

希望对您有所帮助。