我正在运行一个Spring-boot应用程序,该应用程序通过带有spring-security-ldap的内部LDAP对用户进行身份验证。
默认情况下,它与LDAP匿名绑定。
Property 'userDn' not set - anonymous context will be used for read-write operations
但是我希望第一个绑定使用当前用户名。
我应该在哪里指定userDn属性?
谢谢您的建议
答案 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)。