如何编写LDAP查询从指定组提取用户?(Radiant Logic环境)
从Radiant Logic LDAP指定组提取用户的查询问题
我正尝试编写LDAP查询从指定组中提取用户,但试了多个查询都没效果。我们用的是Radiant Logic作为LDAP服务,以下是我试过的查询语句:
(&(uid=*)(cn=groupofUniqueNames=Group_Name,ou=groups,o=trx)) (&(objectclass=groupOfUniqueNames)(uniqueMember=cn=Group_Name,ou=groups,o=trx)) (&(objectclass=groupOfUniqueNames)(cn=Group_Name,ou=groups,o=trx)) (&(objectclass=groupOfUniqueNames)(cn=Group_Name,ou=users,o=trx)) (&(objectCategory=user)(memberOf=CN=Group_Name,ou=groups,o=trx)) (&(objectclass=groupOfUniqueNames)(uniqueMember=CN=Group_Name,ou=groups,o=trx)) (&(objectCategory=group)(cn=Group_Name)) (&(objectClass=groupOfNames)(cn=Group_Name,ou=groups,o=trx)) (&(objectClass=inetOrgPerson)(memberOf=cn=Group_Name,ou=groups,o=trx)) (&(objectClass=user)(uid=johndoe)(memberof=CN=Group_Name,ou=groups,o=trx))
现有查询的问题分析
- 第一个查询语法错误:
cn=groupofUniqueNames=Group_Name格式违规,一个属性不能重复赋值 - 第二、第六个查询逻辑颠倒:
uniqueMember字段存储的是用户的DN,不是组的DN,不能用组DN去匹配这个字段 - 第三、第七、第八个查询是在查找组对象本身,不是组内的用户
- 第四个查询路径错误:组的存储位置是
ou=groups,不是ou=users - 第五、第九、第十个查询误用属性:Radiant Logic用
groupOfUniqueNames类的组,成员属性是uniqueMember,而非AD常用的memberOf,除非目录配置了反向引用属性
正确的查询方法
方法1:先查组,提取成员DN
先查询目标组对象,获取其uniqueMember属性值,这些值就是组内用户的完整DN:
(&(objectClass=groupOfUniqueNames)(cn=Group_Name)(ou=groups,o=trx))
查询时指定返回uniqueMember属性,拿到所有用户DN后,可单独查询每个用户的详细信息。
方法2:反向查询组内用户(需服务器支持)
如果Radiant Logic配置支持LDAP反向匹配规则,可直接查询所有属于目标组的用户:
(&(objectClass=inetOrgPerson)(uniqueMember:1.2.840.113556.1.4.1941:=cn=Group_Name,ou=groups,o=trx))
这里的1.2.840.113556.1.4.1941是LDAP标准的链式匹配规则,用于反向查找组的成员。
注意事项
- 确认用户对象的
objectClass:可能是inetOrgPerson或user,需根据实际目录结构调整 - DN大小写要与目录内一致,Radiant Logic通常对大小写敏感
- 确保查询用的绑定用户有足够权限读取组和用户的属性
内容的提问来源于stack exchange,提问作者signalhouse
相关产品推荐
相关产品推荐

