如何使用spring-data-ldap对ladp用户进行身份验证?

时间:2019-07-09 16:12:37

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

我能够使用spring数据ldap模块创建用户,当我尝试使用userid和密码进行身份验证时,它给出了错误。我的猜测是,当创建用户时,ladp对密码执行某种加密并将其保存到ldap树中。我怎么知道ldao正在使用哪种加密。我已经看到了一些例子,例如如何使用spring-security-ldap对用户进行身份验证,我需要有关spring-data-ldap的帮助。 任何想法将不胜感激。

谢谢

1 个答案:

答案 0 :(得分:0)

这是我上班时得到的代码,它使用LDAP作为身份验证提供程序提供有关Spring安全性的配置。也许它将使您对如何使其工作有所了解。我添加了一些注释来描述实现的一些关键点。这是我的配置类中的代码,扩展了WebSecurityConfigurerAdapter

@Override
protected void configure(HttpSecurity http) throws Exception {
        http.cors().and()                    
                .authorizeRequests()
                .anyRequest().authenticated()
                .and()
                .formLogin()
                .loginPage("/login") // defines the login page
                .loginProcessingUrl("/userAuth") // defines the endpoint which the post with the login form must be sent to.
                .permitAll()
                .and()
                .logout()
                .permitAll()
}

@Override
public void configure(AuthenticationManagerBuilder auth) {
        auth.authenticationProvider(activeDirectoryLdapAuthenticationProvider()); // defines LDAP as your authentication provider.
}

@Bean
public AuthenticationProvider activeDirectoryLdapAuthenticationProvider() {
        ActiveDirectoryLdapAuthenticationProvider authenticationProvider = new ActiveDirectoryLdapAuthenticationProvider(DOMAIN, URL, ROOT_DN); // instantiate and connects to your LDAP provider. DOMAIN, URL and ROOT_DN must be info you have from your LDAP.
        authenticationProvider.setConvertSubErrorCodesToExceptions(true);
        authenticationProvider.setUseAuthenticationRequestCredentials(true);

        return authenticationProvider;
}

使用这样的实现,来自/login并发布到/userAuth的任何登录表单都将在您的LDAP服务器上进行身份验证。因此,您不必担心加密密码或其他任何方式。 LDAP身份验证提供程序可帮助您解决问题。