LdapRepository 配置不匹配

LdapRepository configuration no match

我们正在尝试从 Spring Ldap 设置 LdapRepository 并努力检索用户列表。 Ldap 服务器是一个 ActiveDirectory。

我们可以使用相同的凭据通过 ActiveDirectoryLdapAuthenticationProvider 登录。

Spring 属性:

spring.ldap.base=cn=Users,dc=company,dc=local
spring.ldap.password=secret
spring.ldap.username=useradmin
spring.ldap.urls=ldap://172.16.36.60:389

当读出从登录中检索到的 inetOrgPerson 时,它说: dn="CN=useradmin,CN=Users,DC=company,DC=local"

所以我认为基础是正确的。

不,当尝试从存储库中 .findAll() 时,没有找到任何东西。我们的模型 class 目前看起来像这样。

@Entry(base="cn=Users,dc=company,dc=local",objectClasses = {"inetOrgPerson","top"})
public final class CompanyUser implements Serializable {

@Id private Name dn;
@Attribute(name="username") private String userName;
@Attribute(name="mail") private String email;
...
}

当在 @Entry 注释上省略 base 时,存储库将 return count=0。使用注释上的 base 属性,查询抛出:

javax.naming.NameNotFoundException: [LDAP: error code 32 - 0000208D: NameErr: DSID-03100241, problem 2001 (NO_OBJECT), data 0, best match of:
'CN=Users,DC=company,DC=local'
]

如果 base 已在属性中完全定义,则不在实体 class 上添加 base 是正确的。

服务器未返回任何结果的原因,目前可以通过从 @Entry 中删除 "inetOrgPerson" 对象 class 来解决。