.net LDAP搜索筛选器语法(仅限)用于标识特定OU(AD)中的对象
许多与AD接口的非LDAP特定应用程序(例如,读入对象或使用AD进行身份验证的应用程序)只允许指定LDAP搜索筛选器。但问题是,我不能将查询限制在默认域分区级别以下(至少是AFAIK) 为了解决这个问题,我尝试了如下搜索过滤器:.net LDAP搜索筛选器语法(仅限)用于标识特定OU(AD)中的对象,.net,active-directory,ldap,ldap-query,adsi,.net,Active Directory,Ldap,Ldap Query,Adsi,许多与AD接口的非LDAP特定应用程序(例如,读入对象或使用AD进行身份验证的应用程序)只允许指定LDAP搜索筛选器。但问题是,我不能将查询限制在默认域分区级别以下(至少是AFAIK) 为了解决这个问题,我尝试了如下搜索过滤器: (&(objectClass=user)(objectCategory=person)(distinguishedname=*,OU=MyNamedOU,DC=*)) …然而,在它不起作用之后,我开始寻找关于如何不能基于DiscrimitedName进行查询的
(&(objectClass=user)(objectCategory=person)(distinguishedname=*,OU=MyNamedOU,DC=*))
…然而,在它不起作用之后,我开始寻找关于如何不能基于DiscrimitedName进行查询的文章,因为它是一个构造的属性
不管怎样,是否有办法仅通过搜索筛选器语法将查询限制为特定的OU?
TIAActive Directory不允许您在
DifferentizedName
上搜索部分匹配项。如果查询中有DiscrimitedName
,则只能是精确匹配。这适用于采用区分名称的任何属性,如管理器
、成员
等
实际上,无法仅通过查询字符串将查询限制为特定的OU,因为没有具有OU的可搜索属性。如果只想搜索特定的OU,则需要:
通过将(有时称为“搜索库”)设置为单个OU而不是整个域来搜索单个OU。如果需要,还可以将设置为SearchScope.OneLevel
不搜索子OU。对要包括的每个OU重复搜索。或者
使用您想要的结果搜索排名靠前的OU,循环搜索结果,并通过查看DifferentizedName
丢弃OU中您不想要的结果。(由于此时已经有了结果,discrimitedName
只是一个字符串,您可以使用它执行任何操作,包括部分匹配)
第二个选项通常会更快,因为它意味着对AD进行一次搜索而不是多次搜索,但这取决于最终得到的结果数量和放弃的结果数量。Active Directory不允许您在DifferentizedName
上搜索部分匹配项。如果查询中有DiscrimitedName
,则只能是精确匹配。这适用于采用区分名称的任何属性,如管理器
、成员
等
实际上,无法仅通过查询字符串将查询限制为特定的OU,因为没有具有OU的可搜索属性。如果只想搜索特定的OU,则需要:
通过将(有时称为“搜索库”)设置为单个OU而不是整个域来搜索单个OU。如果需要,还可以将设置为SearchScope.OneLevel
不搜索子OU。对要包括的每个OU重复搜索。或者
使用您想要的结果搜索排名靠前的OU,循环搜索结果,并通过查看DifferentizedName
丢弃OU中您不想要的结果。(由于此时已经有了结果,discrimitedName
只是一个字符串,您可以使用它执行任何操作,包括部分匹配)
第二个选项通常会更快,因为它意味着对广告进行一次搜索,而不是多次搜索,但这取决于你最终得到多少结果以及放弃多少结果。+1-这可能是答案,也是我所期望的答案,但我将保留选择你的答案,希望其他人能够解决这个问题。我的问题是,大多数提供查询LDAP方法的应用程序通常只公开要指定的“Filter”属性,而不是SearchRoot或SearchScope。这个问题是想看看是否有人在应用程序中绕过了这个常见的限制。假设没有人破解这个问题,我会选择这个答案。查询只能与对象的属性匹配。所以很容易确认。只需查看对象上的所有属性(例如,在AD用户和计算机中的属性编辑器中)。唯一具有OU的属性是(在Windows Server 2012中引入),但这是一个构造的属性(在您请求时计算),因此不能在查询中使用。答案很好,我选择选项1,该客户端允许指定多个基础,处理每个基础请求本身,“大多数提供查询LDAP方法的应用程序通常只公开要指定的'Filter'属性,而不是SearchRoot或SearchScope”这不是真的,必须有一个要指定的基,应用程序无法猜测它,名称可能会有所不同,但用于身份验证的“用户基”可能会有所不同,“用户组搜索”用于授权或其他用途,任何搜索查询都需要basedn.+1-这可能是答案,也是我期望的答案,但我将保留选择您的答案的权利,希望其他人能够解决此问题。我的问题是,大多数提供查询LDAP方法的应用程序通常只公开要指定的“Filter”属性,而不是SearchRoot或SearchScope。这个问题是想看看是否有人在应用程序中绕过了这个常见的限制。假设没有人破解这个问题,我会选择这个答案。查询只能与对象的属性匹配。所以很容易确认。只需查看对象上的所有属性(例如,在AD用户和计算机中的属性编辑器中)。唯一具有OU的属性是(在Windows Server 2012中引入),但这是一个构造的属性(在您请求时计算),因此不能在查询中使用。答案很好,我选择选项1,该客户端允许指定多个基础,处理每个基础请求本身,“大多数提供查询LDAP方法的应用程序通常只公开“Filter”属性来指定-