【问题标题】:How do I search LDAP for employees allowing partial dn or uo matches?如何在 LDAP 中搜索允许部分 dn 或 uo 匹配的员工?
【发布时间】:2021-09-10 22:58:30
【问题描述】:

还有一个 LDAP 问题。

tl;博士

这是我想查找的员工的 dn 示例:

CN=ID304397,OU=Personal,OU=UnitedStates,OU=Department,DC=ad,DC=companyName,DC=net

我想查找其 DN 包含值 OU=PersonalDC=adDC=companyNameDC=netgivenName=Name* 的所有员工,同时允许其他 OU 和 DC。

希望找到的员工的示例 DN

CN=ID30434,OU=Personal,OU=Africa,OU=Department,DC=ad,DC=companyName,DC=net
CN=ID1234,OU=Personal,OU=Hawaii,OU=OtherDepartment,DC=additionalDc,DC=ad,DC=companyName,DC=net

更多细节:

使用 Softerra LDAP Administrator 我尝试使用以下过滤器搜索以下 DN

  • 搜索DNDC=ad,DC=companyName,DC=net
  • 过滤器(&(ou=Personal)(objectClass=user)(givenName=Name*))

  • 搜索DNOU=Personal,DC=ad,DC=companyName,DC=net
  • 过滤器(&(objectClass=user)(givenName=Name*))

除此之外什么也没有发现。

我不想在获得查询结果后诉诸于删除 ou 子句并在前端进行过滤。

TIA

【问题讨论】:

    标签: c# active-directory ldap


    【解决方案1】:

    这个任务可以分解成两个微不足道的部分:

    1. 查询所有名为Personal 的组织单位的域:
      • 搜索基础 DN:DC=ad,DC=wedani,DC=net
      • 查询过滤器:(&(ou=Personal)(objectClass=organizationalUnit))
    2. 对于在步骤 1 中发现的每个 OU:
      • 查询该 OU 下的用户:
        • 搜索基础 DN:<distinguishedName of OU>
        • 查询过滤器:(&(objectCategory=person)(objectClass=user)(givenName=Name*))

    对于所有请求,您需要将查询范围限定为 subtree(例如,递归搜索基本 DN 下的任何容器)

    【讨论】:

    • 所以LDAP调用端一定有逻辑。嗯。
    • @DrFloyd5 正确,AD 或 LDAP 规范中没有任何内容可以让您将其作为单个简洁的 LDAP 查询来执行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-26
    • 2013-06-23
    • 2019-08-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多