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

时间:2012-03-23 09:13:43

标签: ldap

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

memberOf=CN=MySubGroup1,OU=MyGroup1,OU=Global Groups,DC=mycompany,DC=com

MyGroup1组有两个子组:MySubGroup1,MySubGroup2。 为了获得MyGroup1的所有用户,我可以进行查询以获取MySubGroup1的用户,另一个查询来获取MySubGroup1的用户,然后进行联合。

但是,我问我如何只用一个LDAP查询就可以获得相同的结果, 询问MyGroup1和子组中的所有用户。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

没有subgroup,只有群组。正确的术语是subordinate, 即,cn=mysubgroup1从属于ou=mygroup1,依此类推。

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

  • 基础对象:OU=MyGroup1,OU=Global Groups,DC=mycompany,DC=com
  • 搜索范围:sub如果ou=mygroup1下方有多个“级别”,则one
  • 过滤器:(|(cn=mysubgroup1)(cn=mysubgroup2))
  • 请求的属性:其值为专有名称的多值属性 该小组的每个成员

这些搜索请求参数应该产生具有两个条目的搜索结果,即区分 每个条目的值,以及其值是每个组成员的可分辨名称的属性。

另见

答案 1 :(得分:2)

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

试试这个:

memberof:1.2.840.113556.1.4.1941:=CN=Some Group,OU=My Organization Unit,DC=company,DC=com

引用该答案:

  

[...]使用Microsoft AD LDAP时,可以使用LDAP_MATCHING_RULE_IN_CHAIN匹配规则使用嵌套组进行授权。这比在客户端上搜索子组要快得多,因为它是在DC服务器上完成的,对网络的查询较少。

     

1.2.840.113556.1.4.1941 LDAP_MATCHING_RULE_IN_CHAIN此规则仅限于适用于DN的过滤器。这是一个特殊的“扩展匹配运算符,它将对象中的祖先链一直走到根,直到找到匹配为止。