Spring似乎具有一些预定义的ldap属性,这些属性可在 application.properties 文件中使用,例如
spring.ldap.urls=
spring.ldap.base=
spring.ldap.username
spring.ldap.password=
但是,似乎仍然需要创建一个安全配置,必须在代码中定义这些属性,因为Spring抱怨找不到任何AuthenticationProvider
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.ldapAuthentication()
.userSearchBase("ou=people")
.userSearchFilter("(uid={0})")
.groupSearchBase("ou=groups")
.groupSearchFilter("(member={0})")
.contextSource().root("dc=baeldung,dc=com")
.ldif("classpath:users.ldif");
}
}
来源https://www.baeldung.com/spring-security-ldap
如何使用这些属性,而无需创建必须再次定义它们的额外配置?
答案 0 :(得分:0)
是的,您需要重新定义这些属性,因为该属性用于创建 DefaultSpringSecurityContextSource 但是,您也可以从application.properties中读取这些属性,而无需重写
@Value("${spring.ldap.urls}")
private String ldapUrls;
@Value("${spring.ldap.base}")
private String ldapBase;
@Value("${spring.ldap.userDnPatterns}")
private String userDnPatterns;
@Value("${spring.ldap.groupSearchBase:ou=groups}")
private String groupSearchBase;
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.ldapAuthentication()
.userSearchBase(ldapBase)
.userSearchFilter("(uid={0})")
.groupSearchBase(groupSearchBase)
.userDnPatterns(userDnPatterns)
}
除了这些安全性之外,Spring还从这些属性创建LdapTemplate Bean