Я бы хотел расширить существующий механизм аутентификации Spring-Security.
Существующая реализация состоит из двух AuthenticationProvider
s:
- стандарт
DaoAuthenticationProvider
(делегирование UserDetailsService
) - пользовательскому
AuthenticationProvider
(каждый из которых охватывает свой сценарий аутентификации)
Я хочу включить другое условие входа («3-й провайдер»).Затем пользователь должен будет пройти авторизацию любым из вышеперечисленных провайдеров, а также это новое условие.
Я понимаю, что AuthenticationProvider
s дополняют друг друга.Если первый сбой, аутентификация передается следующему провайдеру.Это хорошо для двух существующих провайдеров, но не работает с третьим провайдером.
Если я назначу третьего провайдера последним <authentication-provider>
, он не будет вызван, если пользователь был аутентифицирован одним из предыдущих провайдеров.Поместите это как первое, и даже если это не проходит аутентификацию, другие провайдеры все еще будут вызваны.Единственный способ прервать цепочку провайдеров, который я вижу, - бросить AccountStatusException
.Так как же AuthenticationProvider
может сказать next-in-line не запускаться?
Цени руководство.Спасибо.
Использование пружинной защиты 4.