【问题标题】:Spring ldapTemplate: how to lookup fully qualified DN with configured base DN?Spring ldapTemplate:如何使用配置的基本 DN 查找完全限定的 DN?
【发布时间】:2022-03-03 23:57:21
【问题描述】:

当我使用 Springs ldapTemplate 查找 DN 时,我必须省略配置的基本 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(注意末尾加倍的基数)不存在。

因此,当我根据以前查找返回的 DN 进行查找时,我必须从 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);

【问题讨论】:

标签: ldap spring-ldap


【解决方案1】:

根据 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;一个有基础配置,另一个没有。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-19
    • 1970-01-01
    • 1970-01-01
    • 2015-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-01
    相关资源
    最近更新 更多