2015-08-07 4 views
3

Я пытаюсь подключиться к AD от Spring LDAP проектаАутентификация в Java с помощью Spring LDAP

я не нахожу какой-либо метод из DefaultSpringSecurityContextSource для установки CN для проверки подлинности.

public void init(AuthenticationManagerBuilder auth) throws Exception { 
     DefaultSpringSecurityContextSource context = new DefaultSpringSecurityContextSource("ldaps://test.ldaps.com/DC=test,DC=ldaps,DC=com"); 
     context.setPassword("password"); 
     context.afterPropertiesSet(); 
     auth 
       .ldapAuthentication() 
       .userSearchFilter("(|(objectClass=person)(objectClass=user))") 
       .userDnPatterns("uid={0},OU=people)") 
       .contextSource(context); 
} 

Я не нашел способ, например contect.setUserCN().

+0

Вы пытаетесь использовать 'LdapTemplate'? –

+0

нет только с проектом ldap с весной https://spring.io/guides/gs/authenticating-ldap/ – mk2015

+0

Я не хочу использовать любой файл xml для настроек – mk2015

ответ

3

Не нужно устанавливать CN. Вам просто нужно указать диспетчерDN и managerPass, как показано ниже в контексте. Затем Ldap безопасности будет использовать контекст для поиска пользователя, который сопоставляет критерии, извлекает свое DN и затем пытается выполнить привязку с полученным DN и данным проходом.

Это наша конфигурация, которая работает отлично:

@Configuration 
public class SecurityConfig extends WebSecurityConfigurerAdapter { 

    @Autowired 
    private SecurityConfigProperties conf; 

    @Autowired 
    public void configureGlobal(AuthenticationManagerBuilder authBuilder) throws Exception { 
     authBuilder 
      .ldapAuthentication() 
      .userSearchFilter("(sAMAccountName={0})") 
      .userSearchBase("dc=XXXX,dc=XXXXXX,dc=XXX") 
      .groupSearchBase("ou=XXXXXXX,dc=XXXX,dc=XXXXXX,dc=XXX") 
      .groupSearchFilter("member={0}") 
      .contextSource() 
       .url(conf.getLdapUrl()) 
       .port(conf.getLdapPort()) 
       .managerDn(conf.getBindCn()) 
       .managerPassword(conf.getBindPass()); 
    } 

} 

Но после вашего примера context.setUserDN() кода должен быть то, что вы ищете.

+0

спасибо за ваш ответ! , но какой импорт для SecurityConfigProperties? или в какой весенней упаковке я нахожу его? – mk2015

+1

Это просто класс, который мы создали, чтобы автоматически улавливать некоторые свойства из файла конфигурации с помощью '@ConfigurationProperties (prefix =" ldap ") открытого класса SecurityConfigProperties' –

+0

за вашу помощь! оно работает! – mk2015

Смежные вопросы