過濾器在鏈中定義的順序非常重要。無論您實際使用哪種過濾器,順序應如下:
* `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