单行LDAP查询,用于枚举超组内组中的用户

ast*_*oid 20 ldap active-directory

我有一个看起来像这样的计划:

  1. 用户存在UserA,UserB,UserC.
  2. 组存在像OverGroup,SubGroup.
  3. OverGroup会自动将UserA,UserB等新用户添加到其成员资格中.
  4. 子组我自己创建.我已将OverGroup设置为SubGroup的成员.

我希望能够一行查询SubGroup并检索不OverGroup,即:

Values:  
CN=OverGroup,OU=Groups,DC=example,DC=com
Run Code Online (Sandbox Code Playgroud)

但OverGroup中实际用户(用户A,B,C)的完整枚举,即:

Values:  
CN=UserA,OU=OtherOU,DC=example,DC=com
CN=UserB,OU=OtherOU,DC=example,DC=com
CN=UserC,OU=OtherOU,DC=example,DC=com
Run Code Online (Sandbox Code Playgroud)

是否有可以检索此问题的单行LDAP过滤器?(它将被放入Request Tracker实例中的ExternalAuth配置'ldap'部分.非常确定我只能使用ExternalAuth模块可以理解的一个查询来执行此操作.)

我尝试的所有内容都不起作用,从我的阅读中,似乎无法枚举组中的用户列表,该组是另一个组的成员,具有任何单行查询.思考?

cde*_*zaq 29

Active Directory有一个特殊的搜索过滤器选项,允许它通过链接对象(如嵌套组)进行过滤.此功能在此处描述.

以下是如何检索组中所有用户的示例,包括嵌套组:

(&(objectClass=user)(memberof:1.2.840.113556.1.4.1941:={0}))
Run Code Online (Sandbox Code Playgroud)

其中{0}是父组的DN.

  • 它有效,尽管查询速度很慢(约 5-10 秒) (2认同)
  • 仅供参考:在一个非常大的组织中,对我来说这是非常快的. (2认同)

小智 7

(&(objectClass=user)(memberof:1.2.840.113556.1.4.1941:=CN=MPV_BedPlacement,OU=Security Groups,OU=Groups,OU=CCHCS,DC=CCHCS,DC=LDAP))
Run Code Online (Sandbox Code Playgroud)

您必须为组添加完整的DN,而不是花括号.