В настоящее время я работаю над новым проектом (от scracth), начатым с Spring Boot with Spring Security.
Мне нужно реализовать два способа аутентификации в одном и том же REST API. Сначала аутентификация SSO и аутентификация LDAP, выбор делает пользователь, устанавливая флажок в веб-приложении, которое передает запрос аутентификации в API.
Мой вопрос: как я могу этого добиться? Я уже реализовал аутентификацию LDAP или аутентификацию SSO, но никогда не использовал оба в одном проекте, я не нашел никакой документации по этому поводу
С Уважением
похоже, вам нужно реализовать свой собственный AuthenticationProvider. Смотрите код ниже:
@Component
public class CustomAuthenticationProvider implements AuthenticationProvider {
@Override
public Authentication authenticate(Authentication authentication)
throws AuthenticationException {
String name = authentication.getName();
String password = authentication.getCredentials().toString();
if (shouldAuthenticateAgainstThirdPartySystem()) {
// use the credentials
// and authenticate against the third-party system
return new UsernamePasswordAuthenticationToken(
name, password, new ArrayList<>());
} else {
return null;
}
}
@Override
public boolean supports(Class<?> authentication) {
return authentication.equals(
UsernamePasswordAuthenticationToken.class);
}
}
код от: http://www.baeldung.com/spring-security-authentication-provider
в shouldAuthenticateAgainstThirdPartySystem вы можете проверить запрос (https://stackoverflow.com/a/26323545/878361) и решить использовать ldap или sso.