【问题标题】:LDAP : exclude a domain from search queryLDAP:从搜索查询中排除域
【发布时间】:2015-02-23 10:22:22
【问题描述】:

我试图从我的 LDAP 搜索中排除域控制器。

我有 3 个 DC:staffstudentexams

所以我可以使用以下搜索 DN:

  • DC=staff,DC=root,DC=mycompany,DC=fr
  • DC=student,DC=root,DC=mycompany,DC=fr
  • DC=exams,DC=root,DC=mycompany,DC=fr

那么搜索就很简单了:(&(objectCategory=person)(objectClass=user)(sAMAccountName=johndoe))

它可以工作,但是一个人 (sAMAccountName) 可以在多个域下(即学生和考试),所以它被找到了两次。我需要将搜索限制为仅限staffstudent

我尝试了以下查询,但不起作用:

(&(objectCategory=person)(objectClass=user)(sAMAccountName=johndoe)(!(memberOf=DC=exams,DC=root,DC=mycompany,DC=fr)))

【问题讨论】:

    标签: search active-directory ldap ldap-query dn


    【解决方案1】:

    我认为您混淆了您的 DC 和小组。 memberOf 是 Active Directory 中的反向指针属性;它在用户对象上维护,但直接对应于用户所属的组。如果您实际上在与您的域相对应的组中拥有不同的成员,您可以执行类似的操作。不过它看起来更像这样......

    (&
      (objectCategory=person)(objectClass=user)(sAMAccountName=johndoe)
      (!(memberOf=cn=exams_group,ou=groups,DC=exams,DC=root,DC=mycompany,DC=fr))
    )
    

    如果这看起来不适合您,请查看每个条目的 userPrincipalName 属性值。它们可能都有不同的扩展名。 userPrincipalName 保证在整个森林中是唯一的,并且通常采用电子邮件地址samaccountname@domainname 的格式。如果您跨域有重复的 samaccountnames,则 userprincipalname 的域组件很可能会有所不同。

    你可以做这样的事情......有点粗糙但也许有效

    (&
      (objectCategory=person)(objectClass=user)(sAMAccountName=johndoe)
      (!(userprincipalname=*@exams.root.mycompany.fr))
    )
    

    或者您可以提交多个肯定的搜索请求。

    【讨论】:

    • 我们没有特定的考试组。但是您对 userPrincipalName 的看法是正确的!域组件不同(exams.root.mycompany.fr vs mycompany.ch),所以我可以对该属性进行限制。查询:(&(objectCategory=person)(objectClass=user)(sAMAccountName=johndoe)(!(userprincipalname=*@exam.root.mycompany.fr)))。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2013-02-18
    • 1970-01-01
    • 2015-03-03
    • 1970-01-01
    • 2013-05-28
    • 2023-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多