Вместо использования ActiveDirectoryLdapAuthenticationProvider, вы можете использовать Spring LdapTemplate, чтобы иметь собственную реализацию того, как вы аутентифицируете пользователей с помощью LdapServer. Вы можете обратиться к рекомендации здесь и здесь для настройки шаблона LDAP.
Затем вы можете создать класс CustomAuthenticationProvider для обработки аутентификации.
CustomAuthenticationProvider.class
public class CustomAuthenticationProvider implement AuthenticationProvider{
@Autowired
private LdapTemplate ldapTemplate;
@Override
public Authentication authenticate(Authentication auth) throws AuthenticationException{
String username = auth.getName;
String password = auth.getCredentials().toString();
.. Your code to check whether password is blank ..
AndFilter andFilter = new AndFilter();
andFilter.and(new EqualFilter("<LDAP USER ATTRIBUTE>",username))
.and(new EqualFilter("<LDAP GROUP ATTRIBUTE>","<USER GROUP>"));
boolean isValidUser = ldapTemplate.authenticate("",andFilter.encode(),password);
... Your code to complete the authentication ...
{
Я предпочитаю этот подход, поскольку он дает мне более точный контроль над тем, как аутентифицировать пользователя. Вот ссылка на образец , который я реализовал ранее.