spring - 要支持自定义身份验证流程,最好从 OncePerRequestFilter 或 AbstractAuthenticationProcessingFilter 扩展?
问题描述
如果我想支持 spring-security 的新/自定义授权方案,我应该OncePerRequestFilter
像BasicAuthorizationFilter
这样扩展吗?AbstractAuthenticationProcessingFilter
或者我应该从喜欢UsernamePasswordTokenFilter
(和其他人)做延伸吗?我想问这个问题的另一种方式是为什么不BasicAuthorizationFilter
从AbstractAuthenticationProcessingFilter
?
解决方案
如果要实现自定义身份验证方案,则应使用AbstractAuthenticationProcessingFilter
. 它提供了一种attemptAuthentication(HttpServletRequest request, HttpServletResponse response)
可用于编写自定义身份验证逻辑的方法。
Spring 提供了继续使用不同类型的身份验证方案的策略。如下认证过滤器:
BasicAuthorizationFilter
用于 HTTP 基本授权标头身份验证。AbstractAuthenticationProcessingFilter
它可用于任何类型的自定义身份验证方案。所以我认为 Spring 已经提供BasicAuthorizationFilter
了不重新发明轮子的条件。
例如 - 以下所有身份验证实现都是AbstractAuthenticationProcessingFilter
.
OAuth2ClientAuthenticationProcessingFilter
(春季 OAuth2)ClientCredentialsTokenEndpointFilter
(春季 OAuth2)UsernamePasswordAuthenticationFilter
(网页登录认证)
推荐阅读
- php - 如何解析 websocket 数据帧
- vba - 从 Excel VBA 调用 Oracle PL SQL 函数
- react-native - react-native 全局提示用户在网络失败时启用 wifi 或蜂窝
- android - 如何修改android上的触摸屏驱动程序以获得自动快速屏幕触摸?
- android - 活动生命周期-在实际项目中使用
- apache-spark - 加入后处理 Spark 中的不良记录
- vba - 如何将数据透视表列中的所有值除以常数
- python - 在 django 中搜索不起作用
- node.js - 我如何将 RASA 套件与 NodeJS 集成
- c++ - 在 Turbo C++ 中编译。不在视觉工作室