Shiro架構解析
Apache Shiro是一個強大而靈活的開源安全框架。它干凈利落的處理身份認證,授權,企業(yè)會話管理喝加密。Shiro的首要目標是易于使用和理解
Shiro可以做什么?
驗證用戶身份
對用戶訪問進行控制
在任何環(huán)境下使用Session API
在身份驗證或者訪問控制期間或者在會話的生命周期,對事件作出反應
聚集一個或者多個用戶安全數(shù)據(jù)的數(shù)據(jù)源,并且作為一個單一的符合用戶視圖
啟用單點登錄SSO
為沒有關聯(lián)到登錄的用戶提供Remember Me功能
API易于使用
Shiro特性
Apache Shiro是一個擁有許多功能的綜合性程序安全框架
Shiro應用程序的四大基石
- Authentication:有時也簡稱為“登錄”,這是一個證明用戶是他們所說的他們是誰的行為。
- Authorization:訪問控制的過程,也就是絕對“誰”去訪問“什么”。
- Session Management:管理用戶特定的會話,即使在非 Web 或 EJB 應用程序。
- Cryptography:通過使用加密算法保持數(shù)據(jù)安全同時易于使用。
Shiro架構
Shiro的架構主要又3個概念:Subject\SecurityManager\Realms
Subject
Subject可以表示當前正在與軟件交互的用戶。所有Subject實例都被綁定到一個SecurityManager上,當你與一個Subject交互時,那些交互作用轉(zhuǎn)換為與SecurityManager交互的特定Subject交互作用。
SecurityManager
SecurityManager是Shiro架構的核心,用于協(xié)調(diào)內(nèi)部的安全組件。當你正與一個Subject交互的時候,實質(zhì)上是SecurityManager處理所有繁重的Subject操作
Realms
Realms擔當Shiro和你應用程序的安全數(shù)據(jù)之間的橋梁或者連接器,實際上與安全相關的數(shù)據(jù)如用戶身份驗證、授權的用戶賬戶交互時,Shiro從一個或多個為應用程序配置的Realm中尋找這樣的東西。
Shiro架構
Subject
- 當前和軟件交互的實體的安全特定視圖(用戶,第三方服務,cron job等等)
SecurityManager
- 協(xié)調(diào)Shiro內(nèi)部的安全組件。管理每個應用程序的用戶視圖
Authenticator
- Authenticator是一個對執(zhí)行用戶身份驗證登錄的組件。當一個用戶嘗試登陸時候,該邏輯Authenticator執(zhí)行。
- Authentication Strategy
- 如果不知一個Realm被配置,則AuthenticationStaegy將會協(xié)調(diào)這些Realm來決定身份認證嘗試成功或失敗下的條件
- Authorizer
- 負責在應用程序中決定用戶訪問控制的組件。
- SessionManager
- SessionManager負責創(chuàng)建及管理用戶Session的生命周期
- SessionDAO
- SessionDAO代表SessionManager執(zhí)行Session持久化操作
- CacheManager
- CacheManager創(chuàng)建并管理其他Shiro組件使用的Cache實例生命周期。
- Cryptography
- Cryptography 用于加密用戶密碼
- Realms
- Realms和Shiro和應用程序的安全數(shù)據(jù)之間充當僑聯(lián)或者連接器。在身份驗證的時候Shiro從Realm當中尋找該數(shù)據(jù)。
- SecurityManager
- SecurityManager用于執(zhí)行安全操作并且管理應用程序的用戶狀態(tài)(Subject)
