Извиняюсь за длинный вопрос, но, короче говоря, мне интересно, как установить флаг org.springframework.ldap.core.LdapTemplate#ignorePartialResultException
с помощью Spring Java Config.
Длинный вопрос - это...
Я хочу использовать Active Directory наших компаний для аутентификации (под этим я подразумеваю проверку пользователя/пароля) для начала, а затем, после этого, для авторизации (такие роли, которые у них есть разрешение использовать).
Я взял руководство по Spring LDAP и внес изменения для подключения в Active Directory наших компаний вместо использования LDIF-файла руководства. Из отладки я знаю, что программа подключается к Active Directory и правильно аутентифицирует пользователя, но при получении полномочий я получаю следующее исключение:
Unprocessed Continuation Reference(s); nested exception is javax.naming.PartialResultException
Из поиска в Google я увидел, что это обычная проблема LDAP/ActiveDirectory, и мне нужно установить флаги, чтобы игнорировать ссылки. Я следовал примеру из этот вопрос SO< /а>. Однако я все еще получаю исключение, и из отладки я вижу, что ошибка возникает в следующем методе при поиске ролей для пользователя.
org.springframework.ldap.core.LdapTemplate#search(org.springframework.ldap.core.SearchExecutor, org.springframework.ldap.core.NameClassPairCallbackHandler, org.springframework.ldap.core.DirContextProcessor)
Для справки мой файл WebSecurityConfig:
@Bean
public BaseLdapPathContextSource contextSource() throws Exception {
DefaultSpringSecurityContextSource contextSource = new DefaultSpringSecurityContextSource("ldap://<ad-host>:389/");
contextSource.setUserDn(/*principleCN*/);
contextSource.setPassword(/*principlePassword*/);
contextSource.setReferral("ignore");
contextSource.afterPropertiesSet();
return contextSource;
}
@Override
public void init(AuthenticationManagerBuilder auth) throws Exception {
auth.ldapAuthentication()
.userSearchFilter("(&(sAMAccountName={0})(objectclass=user))")
.userSearchBase("dc=<company>,dc=local")
.groupSearchBase("dc=<company>,dc=local")
.contextSource(contextSource());
}