什么是Shiro
Apache Shiro是一個強大且靈活的開源安全框架,易於使用且好理解,撇開了搭建安全框架時的復雜性。
Shiro可以幫助我們做以下幾件事:
- 認證使用者的身份
- 提供用戶的訪問控制,比如:
- 決定一個用戶是否被授予某個特定的安全角色
- 決定用戶是否允許做某件事
- 可以在任何環境中使用Session API,不在局限於web或是EJB容器中
- 可以在認證,訪問控制或是session的生命周期的期間中對特定事件產生反應
- 可以整合多個數據源的用戶安全數據到一個統一的用戶視圖中
- 支持單點登錄
- 支持'記住我'功能
等等
Apache Shiro的特征
下圖展示了Shiro主要的特征:
Primary Cocnerns(基本關注點):Authentication(認證),Authorization(授權),Session Management(會話管理),Cryptography(加密)。
- Authentication(認證):經常和登錄掛鈎,是證明用戶說他們是誰的一個工作
- Authorization(授權):訪問控制的過程,即,決定‘誰’可以訪問‘什么
- Session Management(會話管理):管理用戶特定的會話,即使在非web或是EJB的應用中
- Crytography(加密):通過加密算法保證數據的安全,且易於使用
Supporting Features(輔助特性):
- Web Support(網絡支持):web support API可以幫助在web應用中方便的使用shiro
- Caching(緩存):保證安全操作使用快速有效
- Concurrency(並發):支持多線程應用
- Testing(測試):支持集成單元測試
- “Run As”(以..運行):可以假定用戶為另一個用戶
- “Remeber Me”:記住用戶,無需再次登錄
Authentication和Authenticator的主要流程
- Authentication(認證):
與認證流程相關的Shiro各對象關系如下:
以更加清晰的流程圖對應上述的步驟:
- Authenticator(授權): 與授權相關的Shiro個對象關系如下:
換成流程圖對應上述的步驟: