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