什麼是Shiro
簡單地來說,Apache Shiro是Java的一個安全框架。
Shiro能實現的功能
(1)主要特性:
- Authentication: 驗證用戶身份,通常指登錄。
- Authorization :控制權限
- Session Management :會話管理,用戶登錄成功後相關信息保存在會話中。可以是Web環境也可以是Java環境。
- Cryptography:加密
(2)額外特性:
- Web Support:提供web應用支持,可以很方便集成到web環境
- Caching: 緩存,來保存操作的高效性。
- Concurrency: 支持多線程應用
- Testing: 支持單元測試
- Run As: 允許一個用戶假裝成另一個用戶進行操作
- Remember Me : 記住用戶的身份信息
Shiro架構
從應用角度查看Shiro是如何工作的
從圖片上可以看出來,Shiro有三個重要的概念:
- Subject: 主體,指的是當前和應用交互的用戶,通常是人也可以指第三方服務或者後臺進程等系列應用。所有的Subject都會綁定到SecurityManager,所以當我們和Subject進行交互時,其實真正作用的是SecurityManager。
- SecurityManager:SecurityManager 是Shiro架構核心,它將所有的內部安全組件組合在一起。它充當一種引導者的角色,負責所有與安全有關的事務。
- Realm: 域,充當和具體的安全數據交互的角色,從某種意義上來說,其實就是DAO層。SecurityManager管理者Realm進行身份驗證或者權限驗證。
具體架構
- Subject:和當前應用交互的主體(可以是人、系統…)
- SecurityManager : Shiro的核心,管理所有的Subject,保證所有的組件成功運行。
- Authenticator :認證器,負責主體身份認證。 Authentication Strategy是Authenticator中用來對認證方式進行定義的部分,決定是所有的Realm都需要通過或者其他認證方式。
- Authorizer :授權器,用來對主體訪問某個資源進行權限認證。
- SessionManager :會話管理器,用來管理Session的生命週期(和Servlet的Session類似) ,無論是在Web環境還是普通環境,Shiro都會創建一個Session。SessionDAO 用來對Session進行持久化操作。
- CacheManager :用來管理緩存週期,用來對存放的認證或者授權等信息進行緩存管理。
- Cryptography: 加密模塊,Shiro提供了一天簡單易用的Api。
- Realm:域,充當和具體的安全數據交互的角色。和安全數據進行交互。