Для поддержки настраиваемого потока аутентификации лучше всего перейти от OncePerRequestFilter или AbstractAuthenticationProcessingFilter?

Если я хочу поддерживать новую / настраиваемую схему авторизации для Spring-Security, должен ли я расширяться с OncePerRequestFilter, как это делает BasicAuthorizationFilter? Или мне следует расширяться от AbstractAuthenticationProcessingFilter, как это делают UsernamePasswordTokenFilter (и другие)? Я полагаю, что этот вопрос можно задать по-другому: почему BasicAuthorizationFilter не является наследником AbstractAuthenticationProcessingFilter?

2
0
1 125
1

Ответы 1

Если вы хотите реализовать собственную схему аутентификации, вам следует использовать AbstractAuthenticationProcessingFilter. Он предоставляет метод attemptAuthentication(HttpServletRequest request, HttpServletResponse response), который можно использовать для написания пользовательской логики аутентификации.

Spring предоставил стратегии для использования различных типов схем аутентификации. Итак, следующие фильтры аутентификации:

  1. BasicAuthorizationFilter для аутентификации заголовка HTTP Basic Authorization.
  2. AbstractAuthenticationProcessingFilter его можно использовать для любого типа пользовательской схемы аутентификации. Так что я думаю, что Spring уже предоставил BasicAuthorizationFilter, просто чтобы не изобретать велосипед.

Например - все следующие реализации аутентификации являются подклассами AbstractAuthenticationProcessingFilter.

  • OAuth2ClientAuthenticationProcessingFilter (Spring OAuth2)
  • ClientCredentialsTokenEndpointFilter (Spring OAuth2)
  • UsernamePasswordAuthenticationFilter (аутентификация через Интернет)

Другие вопросы по теме