所以我们有这个LDAP查询(针对OpenLdap)
(&(objectClass=groupOfNames)(member=cn=admin,dc=test,dc=com))
该查询返回 admin 所属的所有群组。它还返回这些组中的所有其他用户。当您有+10.000个用户属于同一组时,这是一个问题。
有没有办法只返回群组名称?像返回的属性过滤器一样?
在Java中有一个类似的选项,但我不知道它是否只进行查询并过滤结果客户端,或如何将其写为LDAP查询。示例:
String returnedAtts[]={"memberOf","name","mail"};
search.setReturningAttributes(returnedAtts);
NamingEnumeration answer = ctx.search(searchBase, "(&(objectClass=user)(sAMAccountName="+username+"))", search);
是的,我知道。使用 memberOf 将是一个更好的选择。但是这个LDAP没有那个属性
答案 0 :(得分:2)
如果使用setReturningAttributes(list)
,LDAP服务器将仅返回这些内容。您不必包含搜索过滤器所基于的属性。这是解决问题的正确方法。
答案 1 :(得分:1)
过滤器之类的
(&(objectClass=groupOfNames)(member=cn=admin,dc=test,dc=com))
不应该返回组中的所有成员。它将返回用户所属的所有组。
过滤器之类的 (及(objectClass的=是groupofNames)9cn = yourdesiredgroupname)(构件= CN =管理员,DC =测试,DC = COM))
仅返回感兴趣的组。将返回的属性设置为CN将仅返回组名。
-Jim