首页 > 解决方案 > LdapTemplate:无法找到特定组,除非 baseDN 与组所在的 OU 相同

问题描述

我已经构建了一个活动目录 api。在一台机器上它工作正常,但在另一台机器上(不同的森林,不同的网络)spring ldapTemplate 找不到特定的组。找到所有其他组。我比较了可以找到的组和不能找到的组。我看不出有什么不同。

出于某种原因,如果我将 ldap 搜索的基础设置为组所在的组织单位,则会显示特定组。此外,如果我在终端上使用 ldifde 搜索广告域,则丢失的组会与其他组一起显示。

我使用的代码非常基本。正如我之前所说,它根本不适用于那台机器。这是我设置 ldap 属性的方法:

        ldapContextSource().setUrl(domain.getAddress() + ":" + domain.getPort());
        ldapContextSource().setBase(domain.getBase());
        ldapContextSource().setUserDn(domain.getUserDn());
        ldapContextSource().setPassword(domain.getDecryptedPassword());
        ldapContextSource().afterPropertiesSet();

        [...]

        @Bean
        public LdapTemplate ldapTemplate() {
            return new LdapTemplate(ldapContextSource());
        }

我使用搜索组

ldapTemplate.findAll(LdapGroup.class);

这就是 LdapGroup.class 的样子:

@Entry(objectClasses = {"top", "group"})
public class LdapGroup {
    @JsonIgnore
    @Id
    private Name dn;
    [...]

标签: javaactive-directoryspring-ldap

解决方案


推荐阅读