19

spring authentication provider和authentication processing filter都需要注册authenticationManager吗?

身份验证提供者我可以使用自定义身份验证提供者标签

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

4

2 回答 2

17

身份验证管理器使用所有身份验证提供程序对其必须进行身份验证的身份验证令牌进行身份验证。

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

这个想法是将令牌生成与令牌身份验证分开。这样,您就可以轻松地实现对多个来源的身份验证等内容。

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

于 2009-06-13T08:14:25.640 回答
14

根据Spring Security Architecture,过程是:

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

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

  1. RememberMeAuthenticationFilter
  2. 提供者管理器

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

请考虑过滤器只有在编码时才会调用 Provider Managers 或 Providers。没有规则可以强制执行。

于 2018-10-20T09:46:28.257 回答