LDAP:从搜索查询中排除域

LDAP : exclude a domain from search query

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

我有 3 个 DC:staffstudentexams

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

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

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

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

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

我认为您混淆了 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))
)

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