SpringBoot 2.x 集成LDAP

一、依赖引用,在pom.xml加入以下依赖:


    org.springframework.security
    spring-security-ldap

 

二、获取LDAP配置信息:

 

application.yml增加如下配置:

ldap.urls=ldap://ldap.example.com:389/ou=test,dc=example,dc=local 
ldap.username=cn=read-only-admin,dc=example,dc=local 
ldap.password=password 
ldap.user.searchfilter=sAMAccountName={0}

 

推荐使用LDAP Browser 或 LDAP Admin Tool,第二个收费,试用30天,我自己使用的LDAP ADMIN TOOL;

使用先使用工具验证上面的配置信息是否正常。

具体如何使用自动研究,比较简单,这具是连接后的效果。

SpringBoot 2.x 集成LDAP_第1张图片

 

SpringBoot 2.x 集成LDAP_第2张图片

三、增加SecurityConfig配置信息,代码如下:

@Configuration
public class LDAPSecurityConfig extends WebSecurityConfigurerAdapter {

    @Value("${ldap.urls}")
    private String ldapUrls;

    @Value("${ldap.base.dn}")
    private String ldapBaseDn;

    @Value("${ldap.username}")
    private String ldapSecurityPrincipal;

    @Value("${ldap.password}")
    private String ldapPrincipalPassword;

    @Value("${ldap.user.searchfilter}")
    private String ldapUserSearchfilter;

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .authorizeRequests()
                .antMatchers("/login**").anonymous()
                .antMatchers("/resources/**").permitAll()
                .antMatchers("/assets/**").permitAll()
                .antMatchers("/").authenticated()
                .antMatchers("/home").authenticated()
                .and()
                .formLogin()
                .loginPage("/login")
                .permitAll()
                .and()
                .logout()
                .permitAll()
                .and()
                .csrf()
                .disable();
    }

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth
                .ldapAuthentication()
                .contextSource()
                .url(ldapUrls + ldapBaseDn)
                .managerDn(ldapSecurityPrincipal)
                .managerPassword(ldapPrincipalPassword)
                .and()
                .userSearchFilter(ldapUserSearchfilter);
    }
}

 

四、Controller代码可以自己实现了,测试是否可以使用域账号正常登录。

 

五、问题点:

 

报 : [RMI TCP Connection(1)-192.168.16.26] WARN o.s.b.a.l.LdapHealthIndicator - LDAP health check failed

java.lang.NullPointerException: null

关闭健康检测

management:
  health:
    ldap:
      enabled: false

 

你可能感兴趣的:(SpringBoot)