active-directory - LDAP_MATCHING_RULE_IN_CHAIN 可以返回带有属性的 'subtree search results' (特别是 "memberOf")吗?

标签 active-directory activedirectorymembership active-directory-group

我有一个带有嵌套组的事件目录 (AD) 测试实例:员工(父)有两个子组:高管和工程师。

Tree:
  Employees
  |
  -Executives
  |   |
  |   -Mister Executive
  |
  -Engineers
      |
      -Joe Engineer

我看到 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))

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

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

回顾

所以最后澄清一下:AD是否允许以任何方式检索“subtree memberOf”结果以及“subtree”LDAP_MATCHING_RULE_IN_CHAIN(“memberOf:1.2.840.113556.1.4.1941:=”)搜索

提前致谢,

最佳答案

我认为您在组和节点之间感到困惑。

目录树

目录是树,其中每个对象都是一个节点。 Active-Directory 有点特殊,因为只有像 organizationalUnits (OU)、DomainsContainers 这样的少数对象可以是包含用户对象的节点。

因此,目录搜索包括:

  • 搜索开始的节点,由专有名称 (DN) 标识
  • 想要恢复的属性
  • 搜索的深度(基础、一级、子树)
  • 过滤器。

  • 目录中的每个对象都包含属性、名称和语法。对于 membermemberOfmanagermanagedBy 等一些属性,Microsoft 提供了一种称为 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),将范围设置为基数,并使用以下查询。
    (memberOf:1.2.840.113556.1.4.1941:=cn=Group1,OU=groupsOU,DC=x)
    

    类似地,要查找“user1”所属的所有组,请将基数设置为组容器 DN;例如 (OU=groupsOU, dc=x) 和子树的范围,并使用以下过滤器。
    (member:1.2.840.113556.1.4.1941:=cn=user1,cn=users,DC=x)
    

    所以LDAP_MATCHING_RULE_IN_CHAIN与目录树节点无关。

    关于active-directory - LDAP_MATCHING_RULE_IN_CHAIN 可以返回带有属性的 'subtree search results' (特别是 "memberOf")吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9945518/

    相关文章:

    java - 在 Java 的 Active Directory 系统中通过 IP 对用户进行身份验证

    c# - 使用 System.DirectoryServices.AccountManagement 程序集中的 PrincipalContext 不断获取异常

    Azure AD OAuth 2.0 无效资源

    c# - 重新初始化 MembershipProvider ASP.NET

    c++ - 查找当前用户事件目录组 C++

    python - 如何使用 Lambda 在 AD 中创建用户和组

    active-directory - 在 ASP.Net Webforms 上使用 ActiveDirectoryMembershipProvider 的 LDAPS

    c# - 从 C# 访问事件目录

    powershell - Powershell每行替换一次文本

    powershell - 将组添加到PowerShell中的组成员