当我使用Spring DN查找ldapTemplate时,必须省略配置好的基本DN。
例如,当基本DN配置为dc=company,dc=com时,工作查找将类似于
ldapTemplate.lookup("ou=whatever,ou=groups")当我通过完全合格的DN时
ldapTemplate.lookup("ou=whatever,ou=groups,dc=company,dc=com")查找失败,并抱怨DN ou=whatever,ou=groups,dc=company,dc=com,dc=company,dc=com (请注意末尾的双基)不存在。
因此,当我根据以前查找的DNs返回的DNs进行查找时,必须从DN.的末尾移除基。
这是相当恼人的,我几乎可以肯定有更好的方法来做到这一点。
因此,如何查找具有配置的基本DN的完全限定DN?
我知道有一个查询方法采用基参数,但是这似乎是为更实际的查询而不是简单的查找而做的。
@jzheaux接受答案的示例使用
LdapName fqdn = ... //fully qualified DN with base DN that is returned from lookup
LdapName baseDn = ((LdapContextSource) ldapTemplate.getContextSource()).getBaseLdapName();
LdapName lookupDn = LdapUtils.removeFirst(fqdn, baseDn);发布于 2022-03-02 18:17:48
根据JavaDoc的说法,这就是LdapUtils#removeFirst的目的:
/**
* Remove the supplied path from the beginning the specified
* <code>Name</code> if the name instance starts with
* <code>path</code>. Useful for stripping base path suffix from a
* <code>Name</code>.
**/或者,您可以配置没有基础的ContextSource。然后,所有查询都使用一个完全限定的名称。或者,您可以使用多个ContextSource;一个配置了一个基座,另一个没有配置。
https://stackoverflow.com/questions/55285743
复制相似问题