过滤器在链中定义的顺序非常重要。无论您实际使用哪种过滤器,顺序应如下:
* `ChannelProcessingFilter`,因为它可能需要重定向到不同的协议
* `SecurityContextPersistenceFilter`,因此可以在Web请求开始时在`SecurityContextHolder`中设置`SecurityContext`,并且当Web请求结束时(可以使用下一个Web请求准备好),可以将对`SecurityContext`的任何更改复制到`HttpSession`。
* ` ConcurrentSessionFilter`,因为它使用`SecurityContextHolder`功能并需要更新SessionRegistry以反映来自主体的持续请求
* 身份验证处理机制 -` UsernamePasswordAuthenticationFilter`,`CasAuthenticationFilter`,`BasicAuthenticationFilter`等 - 以便可以修改`SecurityContextHolder`以包含有效的`Authentication`请求令牌
* SecurityContextHolderAwareRequestFilter,如果您使用它将Spring安全感知HttpServletRequestWrapper安装到您的servlet容器中
* `JaasApiIntegrationFilter`,如果`JaasAuthenticationToken`位于SecurityContextHolder中,则会将`FilterChain`作为`JaasAuthenticationToken`中的`Subject`进行处理
* `RememberMeAuthenticationFilter`,这样如果没有更早的身份验证处理机制更新`SecurityContextHolder`,并且请求提供了一个启用记住我服务的cookie,那么一个合适的记忆`Authentication`对象将放在那里
* ` AnonymousAuthenticationFilter`,这样如果没有早期的身份验证处理机制更新`SecurityContextHolder`,那么匿名身份验证对象将被放在那里
* ExceptionTranslationFilter,用于捕获任何Spring Security异常,以便可以返回HTTP错误响应或启动相应的AuthenticationEntryPoint
* FilterSecurityInterceptor,用于保护Web URI并在访问被拒绝时引发异常
- 架构
- 9.技术概述
- 9.1 运行环境
- 9.2 核心组件
- 9.2.1 SecurityContextHolder, SecurityContext and Authentication Objects
- 9.2.2 The UserDetailsService
- 9.2.3 GrantedAuthority
- 9.2.4 总结
- 9.3 验证
- 9.3.1 在Spring Security中验证是什么
- 9.3.2 直接设置SecurityContextHolder内容
- 9.4 web应用中的验证
- 9.4.1 ExceptionTranslationFilter
- 9.4.2 AuthenticationEntryPoint
- 9.4.3 验证机制
- 9.4.4 在请求之间存储SecurityContext
- 9.5 Spring Security中的访问控制(授权)
- 9.5.1 Security and AOP Advice
- 9.5.2 Secure Objects and the AbstractSecurityInterceptor
- 什么是配置属性
- RunAsManager
- AfterInvocationManager
- 扩展安全对象模型
- 9.6 本地化
- 10 核心服务
- 10.1 The AuthenticationManager, ProviderManager and AuthenticationProvider
- 10.1.1 成功验证时擦除凭据
- 10.1.2 DaoAuthenticationProvider
- 10.2 UserDetailsService实现
- 10.2.1 In-Memory Authentication
- 10.2.2 JdbcDaoImpl
- Authority Groups
- 10.3 Password Encoding
- 10.3.1 密码发展史
- 10.3.2 DelegatingPasswordEncoder
- 密码存储格式
- 密码编码
- 密码比对
- 入门体验
- 排除故障
- 10.3.3 BCryptPasswordEncoder
- 10.3.4 Pbkdf2PasswordEncoder
- 10.3.5 SCryptPasswordEncoder
- 10.3.6 其他PasswordEncoders
- 10.4 Jackson的支持
- 11 测试方法安全
- 12 集成spring mvc测试
- 13 webflux支持
- 14 安全过滤器链
- 14.1 DelegatingFilterProxy
- 14.2 FilterChainProxy
- 14.2.1 绕过过滤链
- 14.3 过滤器顺序
- 14.4 匹配请求和http防火墙
- 14.5 与其他基于过滤器的框架一起使用
- 14.6 Advanced Namespace Configuration
- 15. 核心的安全过滤器
- 15.1 FilterSecurityInterceptor
- 15.2 ExceptionTranslationFilter
- 15.3 SecurityContextPersistenceFilter
- 15.4 UsernamePasswordAuthenticationFilter