我有这样的要求,我需要在 LDAP 中查找具有相同公用名 (CN) 的所有组。例如,我可以使用下面的代码找到一个定义。
("CN=developer.eastRegion,OU=developerGroups,DC=mycomp,DC=com")
DirContextOperations lookupContext =
ldapTemplate.lookupContext("cn=ent.coGLRegion,ou=Groups,dc=kp,dc=org");
实际任务是疯狂搜索常见名称并列出所有组, (“CN=开发人员。*,OU=开发人员组,DC=mycomp,DC=com”)
任何见解都会非常有帮助。预先感谢。
指定
ou=Groups,dc=kp,dc=org
作为您的搜索库;使用 LDAP filter 来匹配剩余的属性,例如基本的 (cn=developer.*)
或更精确的 (&(objectClass=group)(cn=developer.*))
。
(条目 DN 的最左边的 RDN 属于条目本身,因此始终可以使用过滤器来匹配它。通常无法搜索所有其他 RDN,至少在 Active Directory 中不能,尽管在 OpenLDAP 中可以。)
纯粹基于查看文档和其他答案,可能是这样的:
var controls = new SearchControls();
controls.setSearchScope(SearchControls.SUBTREE_SCOPE);
var results = ldapTemplate.search("ou=Groups,dc=kp,dc=org",
"(cn=developer.*)",
controls);
确保您使用
SUBTREE
作为搜索范围。通常是默认的,但似乎可能需要通过SearchControls.SUBTREE_SCOPE
来指定。