没有XML的Spring中的LDAP身份验证

时间:2017-11-16 13:40:24

标签: java spring spring-security ldap

我尝试使用公司的Active Directory在我的应用程序中实现登录系统,其结构与描述here的结构类似,但更加突出。 我这样设置了

import org.springframework.context.annotation.Configuration;
import org.springframework.security.authentication.encoding.LdapShaPasswordEncoder;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .authorizeRequests()
                .anyRequest().fullyAuthenticated()
                .and()
                .formLogin();
    }

    @Override
    public void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth
                .ldapAuthentication()
                    .userDnPatterns("uid={0}")
                    .contextSource()
                        .url("ldap://10.23.1.1:389/dc=dev,dc=company,dc=corp")
                        .and()
                    .passwordCompare()
                        .passwordEncoder(new LdapShaPasswordEncoder())
                        .passwordAttribute("userPassword");
    }
}

当我运行应用程序并尝试登录时,我得到:

Your login attempt was not successful, try again.

Reason: Uncategorized exception occured during LDAP processing; nested exception is javax.naming.NamingException: [LDAP: error code 1 - 000004DC: LdapErr: DSID-0C09079A, comment: In order to perform this operation a successful bind must be completed on the connection., data 0, v23f0]; remaining name 'uid=my.name@company.hr'

我尝试对绑定进行一些研究,但是我找到的所有示例都使用XML,或者演示了与嵌入式ldif的连接,这两者都不适用于此。

0 个答案:

没有答案