无法使用Spring对LDAP进行身份验证

时间:2019-12-20 10:03:35

标签: spring ldap

信息是:

  

C:\ Users \ caydin> whoami
  vegandc1 \ caydin   C:\ Users \ caydin> whoami / upn
  caydin@vegan.local
  C:\ Users \ caydin> whoami / fqdn
  CN = CanerAydın,CN = Users,DC = caner,DC = local

我是从域中公司笔记本电脑的CMD控制台中获得的。

我想要的是使用笔记本电脑登录凭据登录。因此,公司域名。

我是在春季创建的

@Configuration
@EnableWebSecurity
//@EnableGlobalMethodSecurity(securedEnabled = true)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
        auth
                .ldapAuthentication()
                .userDnPatterns("CN=Users")
//                .groupSearchBase("ou=groups")
                .contextSource()
//                .managerDn("CN=Administrator,CN=Users,DC=contoso,DC=com")
//                .managerPassword("myadminpassword")
                .url("ldap://192.168.1.13:389/");
    }
    @Inject
    private CustomAuthenticationProvider customAuthProvider;

和其他班级是:

@Named
public class CustomAuthenticationProvider implements AuthenticationProvider {

  @PostConstruct
    public void init() {
//        LOGGER.info("Initializing Custom LDAP Provider with LDAP server {} and domain name {}.", ldapUrl, domain);
        provider = new ActiveDirectoryLdapAuthenticationProvider("vegan.local",
                "ldap://192.168.1.13:389/");

//        provider.setSearchFilter("(sAMAccountName={1})");
//        provider.setUserDetailsContextMapper(userDetailsMapper);
        provider.setConvertSubErrorCodesToExceptions(true);
    }

 @Override
    public Authentication authenticate(Authentication auth) throws AuthenticationException {
        Authentication authenticated = null;
        authenticated = provider
                .authenticate(
                        new UsernamePasswordAuthenticationToken(
                                auth.getPrincipal(),
                                auth.getCredentials()

          ));

 LOGGER.info("Authentication of user {} {}.", authenticated.getPrincipal(),
                authenticated.isAuthenticated() ? "success" : "failed");
        return authenticated;

    @Override
    public boolean supports(Class<?> arg0) {
        return true;
    }
}

这仅仅是项目的开始。我需要先登录,所以没有其他进展。这是spring的启动器Web项目。

但是它给出了错误。

  

authentication failed: Supplied password was invalid error.

但是我输入了我用来登录的用户名和密码。

我需要什么?我尝试遵循许多示例,例如 Spring Boot LDAP Authentication

但仍然无法执行此操作。请给我建议。

我用于登录笔记本电脑的用户名是:

caydin

但是我将这个用户名用于spring项目:

"caydin@vegan.local"

我也尝试过

@配置 公共类LdapTemplateConfig {

@Bean
public LdapTemplate ldapTemplate() {
    LdapTemplate ldapTemplate = new LdapTemplate(ldapContextSource());
    return ldapTemplate;
}

@Bean
public LdapContextSource ldapContextSource() {

    String url =  "ldap://192.168.1.13:389/";
    String base = "DC=vegan,DC=local";

    LdapContextSource ldapContextSource = new LdapContextSource();
    ldapContextSource.setUrl(url);
    ldapContextSource.setBase(base);
    ldapContextSource.setUserDn(
            "CN=Caner Aydın,CN=Users,DC=vegan,DC=local");
    ldapContextSource.setPassword("xxxas");
    //  ldapContextSource.setReferral("follow");
    ldapContextSource.afterPropertiesSet();
    return ldapContextSource;
}

但相同。

我还尝试了如下3个参数构造函数:

 ActiveDirectoryLdapAuthenticationProvider authenticationProvider =
//                new ActiveDirectoryLdapAuthenticationProvider(ldapDomain, ldapUrl,
//                        "DC=bpn,DC=local");

但是还是一样。

0 个答案:

没有答案