LDAP搜索过滤器语法(仅用于标识特定OU(AD)中的对象]

问题描述 投票:0回答:1

许多与AD交互的非LDAP专用应用程序(例如,读入对象或使用AD进行身份验证的应用程序)仅允许指定LDAP搜索过滤器。不过,问题在于,我无法将查询限制在默认域分区级别(至少是AFAIK)以下。

为了解决这个问题,我正在尝试搜索过滤器,例如:

(&(objectClass=user)(objectCategory=person)(distinguishedname=*,OU=MyNamedOU,DC=*))

...但是,在它不起作用之后,我开始查找有关如何基于专有名称查询的文章,因为它是一个构造属性。

无论如何,仅基于搜索过滤器语法,有没有办法将查询限制为特定的OU?

TIA

.net active-directory ldap ldap-query adsi
1个回答
0
投票

Active Directory不允许您搜索distinguishedName上的部分匹配项。如果查询中为distinguishedName,则只能是完全匹配。对于任何带有distinguishedName的属性,例如managermember等,都是如此。

确实没有办法仅通过查询字符串将查询限制为特定的OU,因为没有包含OU的可搜索属性。如果只想搜索特定的OU,则需要:

  1. 通过将SearchRoot(有时称为“搜索库”)设置为该OU而不是整个域来搜索单个OU。如果需要,还可以将SearchRoot设置为SearchScope以不搜索子OU。对要包括的每个OU重复搜索。或者,
  2. 用所需的结果搜索最顶层的OU,循环搜索结果,并通过查看SearchScope丢弃不想要的OU中的结果。 (因为此时您已经有了结果,所以SearchScope.OneLevel只是一个字符串,您可以使用它进行任何操作,包括部分匹配)
  3. 第二个选项通常会更快,因为它意味着一次针对AD的搜索而不是针对多个对象的搜索,但这取决于最终得到多少结果以及您要丢弃多少结果。

© www.soinside.com 2019 - 2024. All rights reserved.