Всегда получать неверные учетные данные при общении с LDAP - PullRequest
0 голосов
/ 24 мая 2018

Я получаю неверные учетные данные во время связи с LDAP,

У меня настроен пользователь-администратор (и я могу войти в Windows Server 2012 с его помощью), и на сервере установлены доменные службы Active Directory, а затем OK,Я не думаю, что мое приложение имеет какие-либо проблемы, потому что оно работает нормально с вложенным пружиной файла .ldif, и я также пытался с нижеприведенным открытым сервером, и он также работает нормально.

LDAP_Server_Details

Я также делюсь структурой DC, если я передаю неверную информацию из кода, пожалуйста, исправьте меня.

DC_Structure

Любая помощь будет принята с благодарностью

Конфигурация

@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

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

@Override
public void configure(AuthenticationManagerBuilder auth)
        throws Exception {
    System.out.println(
            "WebSecurityConfig configure(AuthenticationManagerBuilder auth)");
    auth.ldapAuthentication()
            .userDnPatterns("uid={0},ou=Users")
            //.groupSearchBase("ou=groups")
            .contextSource(contextSource()).passwordCompare()
            .passwordEncoder(new LdapShaPasswordEncoder())
            .passwordAttribute("userPassword");
}

@Bean
public DefaultSpringSecurityContextSource contextSource() {
    System.out.println(
            "DefaultSpringSecurityContextSource contextSource()");
    return new DefaultSpringSecurityContextSource(
            Arrays.asList("ldap://test.local:389/"),
            "dc=test,dc=local");
}

}

1 Ответ

0 голосов
/ 01 июня 2018

Даже если Active Directory является разновидностью LDAP, стандартная поддержка LDAP (в Spring Security) не работает для него.Вместо этого вы должны использовать специализированный ActiveDirectoryLdapAuthenticationProvider :

@Bean
public ActiveDirectoryLdapAuthenticationProvider adProvider() {
    return new ActiveDirectoryLdapAuthenticationProvider("YOURDOMAIN", "ldap://test.local:389/");
}

@Override
public void configure(AuthenticationManagerBuilder auth) throws Exception {
    auth.authenticationProvider(adProvider());
}

Не забудьте изменить YOURDOMAIN на домен, в который вы хотите войти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...