许多与AD交互的非LDAP专用应用程序(例如,读入对象或使用AD进行身份验证的应用程序)仅允许指定LDAP搜索过滤器。不过,问题在于,我无法将查询限制在默认域分区级别(至少是AFAIK)以下。
为了解决这个问题,我正在尝试搜索过滤器,例如:
(&(objectClass=user)(objectCategory=person)(distinguishedname=*,OU=MyNamedOU,DC=*))
...但是,在它不起作用之后,我开始查找有关如何基于专有名称查询的文章,因为它是一个构造属性。
无论如何,仅基于搜索过滤器语法,有没有办法将查询限制为特定的OU?
TIA
Active Directory不允许您搜索distinguishedName
上的部分匹配项。如果查询中为distinguishedName
,则只能是完全匹配。对于任何带有distinguishedName
的属性,例如manager
,member
等,都是如此。
确实没有办法仅通过查询字符串将查询限制为特定的OU,因为没有包含OU的可搜索属性。如果只想搜索特定的OU,则需要:
SearchRoot
(有时称为“搜索库”)设置为该OU而不是整个域来搜索单个OU。如果需要,还可以将SearchRoot
设置为SearchScope
以不搜索子OU。对要包括的每个OU重复搜索。或者,SearchScope
丢弃不想要的OU中的结果。 (因为此时您已经有了结果,所以SearchScope.OneLevel
只是一个字符串,您可以使用它进行任何操作,包括部分匹配)第二个选项通常会更快,因为它意味着一次针对AD的搜索而不是针对多个对象的搜索,但这取决于最终得到多少结果以及您要丢弃多少结果。