Взгляните на конфигурацию, как показано ниже:
ldap.urls=ldap://***.***.local:8389
ldap.base.dn=dc=test,dc=com
ldap.user.dn.pattern=(&(objectClass=user)(userPrincipalName = {0})(memberof=CN=Group Name,OU=***,OU=****,DC=test,DC=com))
@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
private final static Logger log = LogManager.getLogger(WebSecurityConfig.class);
@Value("${ldap.url}")
private String ldapUrl;
@Value("${ldap.base.dn}")
private String ldapDomain;
@Value("${ldap.user.dn.pattern}")
private String ldapUserDnPattern;
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().anyRequest().fullyAuthenticated().and().httpBasic();
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
ActiveDirectoryLdapAuthenticationProvider adProvider = new ActiveDirectoryLdapAuthenticationProvider(
this.ldapDomain, this.ldapUrl);
adProvider.setConvertSubErrorCodesToExceptions(true);
adProvider.setUseAuthenticationRequestCredentials(true);
// Checks with the Distinguished Name pattern provided
if (this.ldapUserDnPattern != null && this.ldapUserDnPattern.trim().length() > 0) {
adProvider.setSearchFilter(this.ldapUserDnPattern);
}
auth.authenticationProvider(adProvider);
}
}
Может кто-нибудь подскажет, как указать userDn и пароль при настройке с помощью ActiveDirectoryLdapAuthenticationProvider?
На самом деле я также использовал ту же конфигурацию, даже получив сообщение «Предоставленный пароль недействителен». Я настроил userDN с использованием шаблона с помощью setSearchFilter, как показано выше. Не могли бы вы помочь мне с этой ошибкой. Спасибо @Alien
ваше недостающее свойство ldap.base.dn = test.com.
Где я скучаю, не могли бы вы помочь в этом. Спасибо @TomB




определите ldap.domain = test.com в своих свойствах.
@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
private final static Logger log = LogManager.getLogger(WebSecurityConfig.class);
@Value("${ldap.url}")
private String ldapUrl;
@Value("${ldap.base.dn}")
private String ldapBaseDN;
@Value("${ldap.domain}")
private String ldapDomain;
@Value("${ldap.user.dn.pattern}")
private String ldapUserDnPattern;
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().anyRequest().fullyAuthenticated().and().httpBasic();
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
ActiveDirectoryLdapAuthenticationProvider adProvider = new ActiveDirectoryLdapAuthenticationProvider(
this.ldapDomain, this.ldapUrl, this.ldapBaseDN);
adProvider.setConvertSubErrorCodesToExceptions(true);
adProvider.setUseAuthenticationRequestCredentials(true);
// Checks with the Distinguished Name pattern provided
if (this.ldapUserDnPattern != null && this.ldapUserDnPattern.trim().length() > 0) {
adProvider.setSearchFilter(this.ldapUserDnPattern);
}
auth.authenticationProvider(adProvider);
}
}
Ldap.domain и ldap.base.dn разные? если отличается, то какое значение необходимо передать для ldap.domain? благодаря. @TomB
ldap.domain = test.com
ldap.base.dn = dc = test, dc = com
ldap.domain необходим, потому что он добавляется к имени входа. Войдите как "пользователь" в очередь AD для "user @ domain". Это одно из различий между реализациями AD и LDAP в адаптерах Spring.
Я добавляю домен к имени пользователя, например [email protected], во время тестирования. Даже получаю то же самое. Позвольте мне попробовать с приведенной выше конфигурацией. спасибо @TomB
Возможно, сначала оставьте (memberof = CN = Group Name, OU = ***, OU = ****, DC = test, DC = com) и добавьте его позже, когда вы подтвердите, что остальные работают нормально.
Если я уйду (memberof = CN = Group Name, OU = ***, OU = ****, DC = test, DC = com), тогда AD как узнает имя группы. не могли бы вы объяснить мне, как я новичок в этом. Спасибо @TomB.
Без этого всем пользователям может быть разрешено войти в систему. Сначала проверьте, все ли работает нормально. Ваше ограничение позволяет входить в систему только пользователю из указанной группы.
Позвольте нам продолжить обсуждение в чате.
Получение «ExceptionTranslationFilter - доступ запрещен (пользователь анонимен); перенаправление к точке входа аутентификации org.springframework.security.access.AccessDeniedException: доступ запрещен [DEBUG] 2018-08-28 12: 08: 33.070 [http-nio-36454 -exec-3] AntPathRequestMatcher - Запрос "POST / error" не соответствует "GET / ** при тестировании из SOAP. Пожалуйста, найдите здесь некоторые журналы. Спасибо. @TomB