通过application.properties配置Spring LDAP

时间:2019-04-17 09:36:04

标签: spring spring-boot spring-security spring-ldap spring-security-ldap

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

如何使用这些属性,而无需创建必须再次定义它们的额外配置?

1 个答案:

答案 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