【问题标题】:LDAP search not finding entries in child OUsLDAP 搜索未在子 OU 中找到条目
【发布时间】:2013-05-15 17:46:49
【问题描述】:

假设您有一个具有以下结构的 LDAP:

dc=corp,dc=com
|--dc=security
   |--ou=users
      |--ou=corporate
      |  |--ou=it
      |     |--it-user1
      |     |--it-user2
      |--user1
      |--user2
      |--user3

我需要一个搜索查询来查看用户 ou 下的所有条目,包括企业和 it 下的条目。

目前我正在尝试以下方法:

uid=it-user2,ou=users,dc=security,dc=corp,dc=com

搜索范围设置为子树。我的印象是子树范围会导致 LDAP 在整个树中递归搜索,但似乎并非如此。但是,如果我像下面这样将完整路径添加到搜索中,则会找到该条目。

uid=it-user2,ou=it,ou=corporate,ou=users,dc=security,dc=corp,dc=com

谁能告诉我我哪里出错了?谢谢。

【问题讨论】:

    标签: active-directory ldap ldap-query


    【解决方案1】:

    您需要将搜索上下文(即搜索库)设置为存储对象/条目的位置。根据您的示例,搜索上下文是 ou=users,dc=security,dc=corp,dc=com。当您将搜索范围设置为子树时,它应该找到与您的条件匹配的条目(即搜索过滤器)。例如,

    ldapsearch -h SERVER -b ou=users,dc=security,dc=corp,dc=com -s sub "(uid=it-user2)"
    

    当然,使用“子树”搜索范围,您甚至可以将搜索上下文设置为更高级别的容器(例如,dc=security,dc=corp,dc=com)。只要您的条目与您的过滤器指定的条件匹配,您的条目仍然会被找到。由于您正在搜索 ou=users 容器下的所有条目,因此您的查询可能如下所示:

    ldapsearch -h SERVER -b ou=users,dc=security,dc=corp,dc=com -s sub "(uid=*)"
    

    ldapsearch -h SERVER -b ou=users,dc=security,dc=corp,dc=com -s sub "(objectclass=*)"
    

    【讨论】:

      【解决方案2】:

      我为此奋斗了好几个小时 - CN=Users LDAP Directory Entry in .Net - not working with OU=Users

      这可能看起来很愚蠢,但 Active Directory 中的默认树设置是 不是 OU=Users,dc=domain,dc=com 而是 CN=Users ,dc=domain,dc=com(注意 CN= 而不是用户的 OU=。)

      【讨论】:

        【解决方案3】:

        uid=it-user2,ou=users,dc=security,dc=corp,dc=com 不存在。 LDAP 客户端必须为存在的搜索请求提供一个基础对象。

        另见

        【讨论】:

        • “LDAP:搜索最佳实践”的链接已损坏。
        猜你喜欢
        • 2018-05-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多