1.shiro简介
1.簡介
Apache Shiro是Java的一個安全(權限)框架,可以完成認證、授權、加密、會話管理、Web集成、緩存等功能。JavaSE和JavaEE都可適用。
相較于Spring Security框架,shiro使用的還是比較多
2.基本功能:
? Authentication:身份認證/登錄,驗證用戶是不是擁有相應的身份;
? Authorization:授權,即權限驗證,驗證某個已認證的用戶是否擁有某個權限;即判斷用 戶是否能進行什么操作,如:驗證某個用戶是否擁有某個角色。或者細粒度的驗證某個用戶 對某個資源是否具有某個權限;
? Session Manager:會話管理,即用戶登錄后就是一次會話,在沒有退出之前,它的所有 信息都在會話中;會話可以是普通 JavaSE 環境,也可以是 Web 環境的;
? Cryptography:加密,保護數據的安全性,如密碼加密存儲到數據庫,而不是明文存儲; ? Web Support:Web 支持,可以非常容易的集成到Web 環境;
? Caching:緩存,比如用戶登錄后,其用戶信息、擁有的角色/權限不必每次去查,這樣可 以提高效率;
? Concurrency:Shiro 支持多線程應用的并發驗證,即如在一個線程中開啟另一個線程,能 ? 把權限自動傳播過去;
? Testing:提供測試支持;
? Run As:允許一個用戶假裝為另一個用戶(如果他們允許)的身份進行訪問;
? Remember Me:記住我,這個是非常常見的功能,即一次登錄后,下次再來的話不用登 錄了
3.從外部看shiro
(1)Subject:
應用代碼直接交互的對象是 Subject,也就是說 Shiro 的對外 API 核心就是 Subject。Subject 代表了當前“用戶”, 這個用戶不一定 是一個具體的人,與當前應用交互的任何東西都是 Subject,如網絡爬蟲, 機器人等;與 Subject 的所有交互都會委托給 SecurityManager; Subject 其實是一個門面,SecurityManager 才是實際的執行者;
(2)SecurityManager:
安全管理器;即所有與安全有關的操作都會與 SecurityManager 交互;且其管理著所有 Subject;可以看出它是 Shiro 的核心,它負責與 Shiro 的其他組件進行交互,它相當于 SpringMVC 中 DispatcherServlet 的角色
(3)Realm:Shiro 從 Realm 獲取安全數據(如用戶、角色、權限),就是說 SecurityManager 要驗證用戶身份,那么它需要從 Realm 獲取相應的用戶 進行比較以確定用戶身份是否合法;也需要從 Realm 得到用戶相應的角色/ 權限進行驗證用戶是否能進行操作;可以把 Realm 看成 DataSource
4.從內部看shiro
? Subject:任何可以與應用交互的“用戶”;
? SecurityManager :相當于SpringMVC 中的 DispatcherServlet;是 Shiro 的心臟; 所有具體的交互都通過 SecurityManager 進行控制;它管理著所有 Subject、且負責進 行認證、授權、會話及緩存的管理。
? Authenticator:負責 Subject 認證,是一個擴展點,可以自定義實現;可以使用認證 策略(Authentication Strategy),即什么情況下算用戶認證通過了;
? Authorizer:授權器、即訪問控制器,用來決定主體是否有權限進行相應的操作;即控 制著用戶能訪問應用中的哪些功能;
? Realm:可以有 1 個或多個 Realm,可以認為是安全實體數據源,即用于獲取安全實體 的;可以是JDBC 實現,也可以是內存實現等等;由用戶提供;所以一般在應用中都需要 實現自己的 Realm;
? SessionManager:管理 Session 生命周期的組件;而 Shiro 并不僅僅可以用在 Web 環境,也可以用在如普通的 JavaSE 環境
? CacheManager:緩存控制器,來管理如用戶、角色、權限等的緩存的;因為這些數據 基本上很少改變,放到緩存中后可以提高訪問的性能
? Cryptography:密碼模塊,Shiro 提高了一些常見的加密組件用于如密碼加密/解密。
總結
- 上一篇: python3.7使用pip insta
- 下一篇: 订单结算中最佳优惠券组合推荐策略分析