LDAP查询,用于枚举组子组的所有用户

LDAP查询,用于枚举组子组的所有用户,ldap,Ldap,此LDAP查询成功枚举组中的所有用户: memberOf=CN=MySubGroup1,OU=MyGroup1,OU=Global Groups,DC=mycompany,DC=com 组MyGroup1有两个子组:MySubGroup1、MySubGroup2。 为了获取MyGroup1的所有用户,我可以进行一个查询以获取MySubGroup1的用户,另一个查询以获取MySubGroup1的用户,然后进行联合 但是,我想问的是,如何仅使用一个LDAP查询就能获得相同的结果, 询问MyGrou

此LDAP查询成功枚举组中的所有用户:

memberOf=CN=MySubGroup1,OU=MyGroup1,OU=Global Groups,DC=mycompany,DC=com
组MyGroup1有两个子组:MySubGroup1、MySubGroup2。 为了获取MyGroup1的所有用户,我可以进行一个查询以获取MySubGroup1的用户,另一个查询以获取MySubGroup1的用户,然后进行联合

但是,我想问的是,如何仅使用一个LDAP查询就能获得相同的结果, 询问MyGroup1和子组中的所有用户


有什么想法吗?

没有所谓的
子组,只有组。正确的术语是
下属
,
i、 例如,
cn=mysubgroup1
从属于
ou=mygroup1
,依此类推

在LDAP搜索请求中使用以下参数:

  • 基本对象:
    OU=MyGroup1,OU=Global Groups,DC=mycompany,DC=com
  • 搜索范围:
    sub
    如果
    ou=mygroup1
    下有多个“级别”,则为
    one
  • 过滤器:
    (|(cn=mysubgroup1)(cn=mysubgroup2))
  • 请求的属性:值为可分辨名称的多值属性 小组每个成员的
这些搜索请求参数应生成包含两个条目的搜索结果,即 以及其值为每个组成员的可分辨名称的属性

另见

如果您的服务器是Microsoft Active Directory,则可以使用。其中一条规则基本上满足了您的需求。看

试试这个:

memberof:1.2.840.113556.1.4.1941:=CN=Some Group,OU=My Organization Unit,DC=company,DC=com
引述该答案:

[…]使用Microsoft AD LDAP时,可以使用LDAP_匹配_规则_IN_链匹配规则使用嵌套组进行授权。这比在客户机上搜索子组快得多,因为它是在DC服务器上完成的,通过网络进行的查询更少

1.2.840.113556.1.4.1941 LDAP_匹配_规则_IN_链此规则仅限于应用于DN的筛选器。这是一个特殊的“扩展匹配”操作符,它沿着对象中的祖先链一直走到根,直到找到匹配为止


在哪种编程语言/系统中?我想问的是如何在一个LDAP查询中实现这一点。因此,答案与编程语言(java、c、scala…)无关。我不认为您可以在直接的LDAP查询中实现这一点,对不起……有人可以用java来说明这一点吗?谢谢,您救了我的命!