Spring Security是一個能夠為基於Spring的企業應用系統提供聲明式的安全訪問控制解決方案的安全框架。它提供了一組可以在Spring應用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反轉Inversion of Control ,DI:Dependency Injection 依賴注入)和AOP(面向切面編程)功能,為應用系統提供聲明式的安全訪問控制功能,減少了為企業系統安全控制編寫大量重復代碼的工作。[1]
1. core模塊
認證Authentication代表了認證請求的token或者Authenticationmanager的authenticate方法處理的認證principal。一旦請求認證通過,SecurityContextHolder將Authentication保存到SecurityContext中。下面我們看一下Authentication的繼承關系:
userDetails
context包:
Authentication存放在SecurityContext中。SecurityContextHolder將特定SecurityContext和當前執行線程聯系到一起。此類提供了一些列靜態方法來代理SecurityContextHoderStrategy實例。這個類的設計目的是使用便利方法為指定的jvm指明策略。有三種策略:MODE_GLOBAL、MODE_THREADLOCAL、MODE_INHERITABLETHREADLOCAL。分別對應:GlobalSecurityContextHolderStrategy、ThreadLocalSecurityContextHolderStrategy、InheritableThreadLocalSecurityContextHolderStrategy。
兩種方法可以設置這些 策略。第一在系統屬性中設置;第二是在使用前調用setStrategeName設置。如果上述方式都沒有使用,默認情況下使用MODE_THREADLOCAL,MODE_THREADLOCAL是向后兼容的。
grantedAuthority
2.authentication模塊
authenticationManager跟蹤:
了解一下authentication的處理抽象接口AuthenticationProvider,它的集成層次關系
3. 授權模塊
決策管理器Voter
小結:
參考文獻:
[1]http://baike.baidu.com/link?url=hpt7PSOWpcOzJWxE75_H0WF8N2iXKpDAjGNQrDFsPkoDlyhNEE1lparIWzTsGV2-AyP3StHUXWesb2SCWc0SKK