春季启动LDAP-未设置属性'userDn'

时间:2020-07-14 14:18:55

标签: spring-boot ldap spring-ldap

我正在运行一个Spring-boot应用程序,该应用程序通过带有spring-security-ldap的内部LDAP对用户进行身份验证。

默认情况下,它与LDAP匿名绑定。

Property 'userDn' not set - anonymous context will be used for read-write operations

但是我希望第一个绑定使用当前用户名。

我应该在哪里指定userDn属性?

谢谢您的建议

2 个答案:

答案 0 :(得分:0)

对于Spring-boot,我不是最有知识的人,对于LDAP更是如此。 也就是说,您的application.properties文件中应提及您的LDAP配置属性,并将其命名为spring.ldap.*here文档中提到了它们。

初始化身份验证提供程序时,可以使用以下方法传递重要的属性,例如基本DN(要搜索的根)和过滤器:

.userSearchBase("ou=<your users container>").userSearchFilter("(uid={0})")

您的搜索过滤器很有可能是uid={0}cn={0}

答案 1 :(得分:0)

当使用 spring ldap 时,也许您从网上的许多教程开始,但其中主要使用嵌入式 ldap 服务器;嵌入式服务器使用 ldif 文件,不需要管理器凭据。

当连接到外部 ldap 服务器时,您需要通过 managerDn 方法指定 userDn 设置它。这里是代码片段

protected void configure(AuthenticationManagerBuilder auth) throws Exception {
       auth.ldapAuthentication().contextSource().managerDn("uid=admin,ou=system")
        .managerPassword("secret")
.......
}

显然,您还需要提供所有其他信息,如 url、端口等(以及像 mvreijn 所说的 userSearchBase)。