弹簧身份验证提供程序 VS 身份验证处理筛选器

2022-09-02 12:38:43

spring 身份验证提供程序和身份验证处理筛选器也需要向 authenticationManager 注册?

身份验证提供程序 i 可以使用自定义身份验证提供程序标记

但是什么是不同的弹簧身份验证提供程序和身份验证处理过滤器?


答案 1

身份验证管理器使用所有身份验证提供程序对身份验证进行身份验证,这会导致它必须进行身份验证。

身份验证处理筛选器仅添加一个令牌(用户名密码)。其他筛选器也会添加令牌。例如,AnonymousProcessingFilter。

这个想法是将令牌生成与令牌身份验证分开。通过这种方式,您可以轻松实现针对多个源的身份验证之类的内容。

常规情况是每个令牌生成器一个提供程序。


答案 2

根据Spring Security Architecture,该过程是:

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

请参阅此处的示例:筛选器正在调用提供程序管理器以查找支持身份验证提供程序,如果是,则进行身份验证

  1. 记住我身份验证过滤器
  2. ProviderManager

在这里,您可以找到有关如何实现自定义筛选器的一个很好的例子:自定义筛选器@Baeldung

请注意,仅当筛选器的编码方式如此时,筛选器才会调用提供程序管理器或提供程序。没有规则可以强制执行。


推荐