首页 > 解决方案 > Spring LDAP - 批量查找完整 DN

问题描述

我正在使用 spring-ldap,我遇到了一种情况,我必须从 AD 服务器中查找一堆完整的 DN。在通往 AD 服务器的路上有很多延迟,所以如果我只是按顺序进行 N 次查找:

 LdapTemplate.findByDn(dn,MyClass);

尽管它本身并不是一项非常昂贵的操作,但它往往相当慢。例如,如果我有 GUID,我可以简单地执行批处理或 OR 条件:

 (|(objectGUID=A)(objectGUID=B)(objectGUID=C))

但我找不到对完整 DN 执行相同操作的方法。这甚至存在吗?如果可以的话,我想避免并行运行 N 个查询...

标签: ldapspring-ldap

解决方案


由于这是一个 Active Directory 域,因此在 distinctName 属性中搜索完全限定的 DN:

(|(distinguishedName=CN=Lisa,OU=ResourceUsers,DC=example,DC=com)(distinguishedName=CN=Scott,OU=ResourceUsers,DC=example,DC=com)(distinguishedName=CN=Anya,OU=ResourceUsers,DC=example,DC=com))

或者,如果可能,将所有有效用户添加到组中并搜索属于组成员的个人(这样可以避免每次添加/删除用户时都必须调整 LDAP 查询)- 将帐户添加到组他们将出现在您的查询中,从组中删除某人,他们将从结果集中消失。

(&(memberOf=cn=MyGroupName,ou=OUForGroups,dc=example,dc=com))

推荐阅读