Вы можете использовать пользовательский AuthenticationProvider
для аутентификации за вас.
Вот простой пример:
- Создайте
CustomRemoteAuthenticationProvider
, который вызывает вашу службу аутентификации:
public class CustomRemoteAuthenticationProvider implements AuthenticationProvider {
@Override
public Authentication authenticate(Authentication authentication)
throws AuthenticationException {
String username = authentication.getName();
String password = authentication.getCredentials().toString();
// call your authentication service
// ... and return a UsernamePasswordAuthenticationToken
}
@Override
public boolean supports(Class<?> authentication) {
return authentication.equals(UsernamePasswordAuthenticationToken.class);
}
}
Объявите ваш
CustomRemoteAuthenticationProvider
как боб (что вы можете сделать в
WebSecurityConfigurerAdapter
), который будет автоматически выбран и добавлен к
AuthenticationManager
:
@Bean
public CustomRemoteAuthenticationProvider customRemoteAuthenticationProvider() {
return new CustomRemoteAuthenticationProvider();
}
Примечание : Вы можете сделать все это за один шаг, добавив @Component
непосредственно к CustomRemoteAuthenticationProvider
. Также, проверьте javado c для AuthenticationProvider
для списка AuthenticationProvider
s, если вы хотите больше идей о том, как написать один. DaoAuthenticationProvider
обычно используется с JdbcDaoImpl
для аутентификации в базе данных.