用于识别特定 OU (AD) 中对象的 LDAP 搜索过滤器语法(仅)
LDAP Search Filter Syntax (ONLY) to Identify Objects in a Specific OU (AD)
许多与 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
(sometimes called "search base") to that OU rather than the whole domain. You can also set the SearchScope
设置为 SearchScope.OneLevel
来搜索单个 OU,如果需要则不搜索子 OU。对要包含的每个 OU 重复搜索。或者,
- 用您想要的结果搜索最顶层的 OU,遍历结果,并通过查看
distinguishedName
丢弃您不想要的 OU 中的结果。 (因为此时您已经有了结果,distinguishedName
只是一个字符串,您可以随意使用它,包括部分匹配)
第二个选项通常会更快,因为它意味着针对 AD 进行一次搜索而不是多次搜索,但这取决于您最终得到多少结果以及要丢弃多少结果。
许多与 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
(sometimes called "search base") to that OU rather than the whole domain. You can also set theSearchScope
设置为SearchScope.OneLevel
来搜索单个 OU,如果需要则不搜索子 OU。对要包含的每个 OU 重复搜索。或者, - 用您想要的结果搜索最顶层的 OU,遍历结果,并通过查看
distinguishedName
丢弃您不想要的 OU 中的结果。 (因为此时您已经有了结果,distinguishedName
只是一个字符串,您可以随意使用它,包括部分匹配)
第二个选项通常会更快,因为它意味着针对 AD 进行一次搜索而不是多次搜索,但这取决于您最终得到多少结果以及要丢弃多少结果。