所以The Direct Project再次罢工。我不是 LDAP 专家,但我正在尝试设置一个测试环境,因为该标准要求任何包都支持从 LDAP 以及 DNS CERT 获取证书,无论包实现哪种方法。
根据the documentation ,来自“3.3.3 LDAP 查询”部分的规定事件序列(根据相关性进行修剪):
* Discover the Base DNs
Branches in LDAP must be defined by a “Base DN”. The list of Base DNs that are
provided by a LDAP directory are found by doing a LDAP Query with a NULL (i.e.
“”) Base DN, and ObjectClass=”DN”.
* Query across the Base DN for entries where "Mail" contains the endpoint address
我正在尝试使用 ldap_* 函数在 php 中实现此过程,但他们的方法似乎不起作用。显然,NULL 与空字符串不同(后者使得对 ldap_search 的任何调用返回“没有这样的对象”错误),并且“DN”不是 ObjectClass 属性的有效值。
那么,TL;DR,匿名远程用户是否有其他方法检索我丢失的(列表?)基本 DN?
更新:重新措辞标题以反射(reflect)问题的根本原因:当 ldap_* api 不允许您指定“基本”范围时,从 PHP 读取 rootDSE。
最佳答案
因此,再次阅读文档回答了我的问题。
显然,ldap_search()、ldap_list() 和 ldap_read() 之间的唯一区别是范围(分别为 LDAP_SCOPE_SUBTREE(子)、LDAP_SCOPE_ONELEVEL(一)和 LDAP_SCOPE_BASE(基))。因此,使用 ldap_read() 而不是其他方法将允许获取 rootDSE。
关于PHP ldap_* API : Limiting to base scope?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20353772/