spring认证提供程序VS认证处理过滤器

com*_*tta 13 java spring spring-mvc spring-security

spring认证提供程序和认证处理过滤器都需要注册authenticationManager吗?

身份验证提供程序我可以使用custom-authentication-provider标记

但是什么是不同的Spring认证提供程序和认证处理过滤器?

squ*_*dle 15

身份验证管理器使用所有身份验证提供程序来验证它必须进行身份验证的身份验证.

身份验证处理过滤器只添加一个令牌(用户名密码).其他过滤器也添加令牌.例如AnonymousProcessingFilter.

我们的想法是从令牌身份验证中分离令牌生成.这样,您就可以轻松实现针对多个源的身份验证等内容.

常规情况是每个令牌生成器一个提供者.


Rod*_*van 5

根据Spring Security Architecture,过程为:

  1. 过滤器用于拦截http请求并进行一些检查
  2. 一些过滤器正在检查请求标头,正文,Cookie等中的授权信息。您可以将它们称为Authentication Processing过滤器
  3. 身份验证的实际工作由另一个称为“身份验证提供程序”的参与者完成,因为如果实现需要过滤器,它将调用提供程序。
  4. 可能发生的情况是,在筛选器和提供者之间可以保留一个提供者管理器,该管理器可以一一调用所有提供者,并查看其中是否有一部分可以处理它(如果可以):然后这样做。

在此处查看示例:过滤器正在调用提供程序管理器以查找支持身份验证提供程序,如果是,则进行身份验证

  1. RememberMeAuthenticationFilter
  2. ProviderManager

在这里,您可以找到有关如何实现自定义过滤器的好示例:自定义过滤器@Baeldung

请考虑过滤器仅在这样编码时才调用提供程序管理器或提供程序。没有强制执行该规则的规则。