LDAP_MATCHING_RULE_IN_CHAIN可以返回带有属性(特别是"memberOf")的"子树搜索结果"吗?

use*_*465 4 active-directory active-directory-group activedirectorymembership

我有一个带有嵌套组的活动目录(AD)测试实例:Employees(Parent)有两个子组:Executives和Engineers.

Tree:
  Employees
  |
  -Executives
  |   |
  |   -Mister Executive
  |
  -Engineers
      |
      -Joe Engineer
Run Code Online (Sandbox Code Playgroud)

我看到AD扩展名LDAP_MATCHING_RULE_IN_CHAIN将搜索子树; 我可以搜索具有此查询的所有员工:

query:
( & (objectClass=person)   (memberOf:1.2.840.113556.1.4.1941:=CN=Employees,CN=Users,DC=cloud,DC=com))
Run Code Online (Sandbox Code Playgroud)

问题:递归搜索,但没有递归结果

但是,我找不到获取"子树搜索结果"的方法,即当查询将"Mister Executive"作为"Employee"返回时,"memberOf"属性仅列出"Executives",即他直接所属的组.我检查了所有其他属性,但没有看到任何"员工"

概括

因此,为了最终澄清:AD是否允许以任何方式检索"subtree memberOf"结果以及"子树"LDAP_MATCHING_RULE_IN_CHAIN("memberOf:1.2.840.113556.1.4.1941:=")搜索

提前致谢,

JPB*_*anc 9

我认为你在组和节点之间感到困惑.

目录树

目录是树,其中每个对象都是一个节点.Active-Directory有点特殊,因为只有少数对象organizationalUnits(如OU),Domains或者Containers可以是包含用户对象的节点.

所以目录搜索包括:

  1. 搜索开始的节点由区分名称(DN)标识
  2. 您希望被带回的地点
  3. 搜索的深度(基数,一级,子树)
  4. 过滤器.

目录中的每个对象都包含具有名称和语法的属性.对于像某些属性member,memberOf,manager,managedBy,微软提供了一个称为特殊的语法uniqueName.此语法用于可分辨名称,但该目录为这些属性提供了一种关系完整性.这意味着,例如,如果在目录中移动对象,则此属性中的DN将保留其值.如果移动用户,member则会自动调整其所属的组中的属性.

现在LDAP_MATCHING_RULE_IN_CHAIN.

当用户X是组A的成员时.用户X DN在A组的成员属性中,A组DN在用户X的memberOf属性中.如果组A是组B的成员,则用户X属于对于组B,但B组DN不在用户X的memberOf属性中.在这里,您可以LDAP_MATCHING_RULE_IN_CHAIN用来查找属于组的递归.这是一个特殊的扩展匹配运算符,它将对象中的祖先链一直遍历到根,直到找到匹配为止.

这种查询的Microsoft示例旨在检查用户"user1"是否是组"group1"的成员.您可以将基数设置为用户DN(cn = user1,cn = users,dc = x),并将范围设置为base,并使用以下查询.

(memberOf:1.2.840.113556.1.4.1941:=cn=Group1,OU=groupsOU,DC=x)
Run Code Online (Sandbox Code Playgroud)

同样,要查找"user1"所属的所有组,请将base设置为groups容器DN; 例如(OU = groupsOU,dc = x)和子树的范围,并使用以下过滤器.

(member:1.2.840.113556.1.4.1941:=cn=user1,cn=users,DC=x)
Run Code Online (Sandbox Code Playgroud)

因此LDAP_MATCHING_RULE_IN_CHAIN与目录树节点无关.