【问题标题】:PHP ldap_* API: Limiting to base scope?PHP ldap_* API:限制在基本范围?
【发布时间】:2023-03-31 02:07:01
【问题描述】:

所以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 的任何调用都返回“No such object”错误),并且“DN”不是 ObjectClass 属性的有效值。

那么,TL;DR,匿名远程用户是否有另一种方式检索我丢失的(列表?)基本 DN?

更新:改写标题以反映我的问题的根本原因:当 ldap_* api 不允许您指定“基本”范围时,从 PHP 读取 rootDSE。

【问题讨论】:

    标签: php ldap openldap ldap-query


    【解决方案1】:

    因此,另一篇通读文档的文章为我回答了我的问题。

    显然,ldap_search()、ldap_list() 和 ldap_read() 之间的唯一区别是作用域(分别为 LDAP_SCOPE_SUBTREE(子)、LDAP_SCOPE_ONELEVEL(一)和 LDAP_SCOPE_BASE(基))。所以使用 ldap_read() 而不是其他的将允许一个人获得 rootDSE。

    【讨论】:

    • 我本来打算去的,但它让我等了 2 天。我猜是声望低。
    【解决方案2】:

    root dse。请参阅“命名上下文”。

    更新:

    在java中:

    LDAPConnection conn = new LDAPConnection(hostname,port);
    SearchRequest req = new SearchRequest("",SearchScope.BASE,"(&)","+");
    SearchResult result = conn.search(req);
    
    // If the search succeeds, the result will comprise one entry,
    // and that entry is the Root DSE:
    
    dn: 
    subschemaSubentry: cn=schema
    namingContexts: C=us
    vendorName: UnboundID Corp.
    vendorVersion: UnboundID Directory Server 4.1.0.6
    

    【讨论】:

    • 根据该链接,“如果基础对象不是 ('') 或搜索范围不是 'base',则不允许 LDAP 兼容的目录服务器从根 DSE 返回属性”但是我找不到任何更改 ldap_search() 或 ldap_list() 范围的方法,否则它们似乎是调用此功能的正确函数。
    • 我的文章只是说你可以使用空/空字符串作为基础对象,但是服务器不能返回根DSE,除非范围是base。如果您将基础对象设置为"" 并将范围设置为sub,您应该获得整个DIT,假设服务器允许这种拖网。我不确定如何在您的 API 中执行此操作,但它应该足够简单,可以使用 "" 作为基础对象,对吧。我无法想象一个 API 不能更改基础对象、过滤器、范围或请求的属性。
    • 无需想象。 It exists!>_
    • 这很奇怪。我从未看过 PHP LDAP 实现,您是对的:似乎无法更改 ldap_search 中的范围。在任何情况下,您都无法使用base 范围检索根 DSE。您可以使用其他语言吗?
    • 应该是:“如果不使用基本范围,您将无法检索根 DSE。”
    猜你喜欢
    • 2011-09-05
    • 2012-08-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多