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

时间:2009-06-12 01:37:16

标签: java spring spring-mvc spring-security

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

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

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

2 个答案:

答案 0 :(得分:14)

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

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

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

常规案例是每个令牌生成器一个提供者。

答案 1 :(得分:2)

根据Spring Security Architecture的过程是:

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

在此处查看示例:过滤器正在呼叫提供商经理,以找到支持提供商 身份验证,如果需要,则身份验证

  1. RememberMeAuthenticationFilter
  2. ProviderManager

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

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