Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net LDAP搜索筛选器语法(仅限)用于标识特定OU(AD)中的对象_.net_Active Directory_Ldap_Ldap Query_Adsi - Fatal编程技术网

.net LDAP搜索筛选器语法(仅限)用于标识特定OU(AD)中的对象

.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进行查询的

许多与AD接口的非LDAP特定应用程序(例如,读入对象或使用AD进行身份验证的应用程序)只允许指定LDAP搜索筛选器。但问题是,我不能将查询限制在默认域分区级别以下(至少是AFAIK)

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

(&(objectClass=user)(objectCategory=person)(distinguishedname=*,OU=MyNamedOU,DC=*))
…然而,在它不起作用之后,我开始寻找关于如何不能基于DiscrimitedName进行查询的文章,因为它是一个构造的属性

不管怎样,是否有办法仅通过搜索筛选器语法将查询限制为特定的OU?


TIA

Active 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”属性来指定-