【Apache Shiro】學習筆記二

Shiro的頂層架構圖html

    這其中主要講的是 subject、securityManager、Realm的關係java

    用戶請求訪問系統,那麼這個用戶就被認爲是一個subject,subject要和後臺系統交互,首先通過securityManager的內部處理,而後經過橋樑Realm進行交互。因此被稱爲DAO的Realm就是一個相似轉接器的部件。apache

    由此能夠看出,shiro的具體業務邏輯實現就是Realm的實現,咱們主要的工做就是設計編寫Realm,這很重要。編程

 

各組件層次圖後端

 

    Subject:(org.apache.shiro.subject.Subject),如上所述;api

    SecurityManager:(org.apache.shiro.mgt.SecurityManager),如上所述;緩存

    Authenticator(用戶認證管理器):(org.apache.shiro.authc.Authenticator)安全

        這個組件主要用於處理用戶登陸邏輯,他經過調用Realm的接口來判斷當前登陸的用戶的身份。session

        用戶認證策略,(org.apache.shiro.authc.pam.AuthenticationStrategy)架構

            若是系統配置了多個Realm,則須要使用AuthenticationStrategy 來協調這些Realm以便決定一個用戶登陸的認證是成功仍是失敗,特別是當有多個Realm的時候,須要設立專門的決策機制判斷登陸成功與否;

     Authorizer(權限管理器):(org.apache.shiro.authz.Authorizer)

    這個組件主要是用來作用戶的訪問控制。通俗來講就是決定用戶能作什麼、不能作什麼。和Authenticator相似,Authorizer也知道怎麼協調多個Realm數據源的數據,他有本身的一套策略。

    SessionManager(會話管理器) (org.apache.shiro.session.mgt.SessionManager)

    SessionManager知道如何建立會話、管理用戶回話的聲明週期以便在全部運行環境下均可以給用戶提供一個健壯的回話管理體驗。Shiro在任何運行環境下均可以在本地管理用戶會話(即使沒有Web或者EJB容器也能夠)——這在安全管理的框架中算是獨門絕技了。固然,若是當前環境中有會話管理機制(好比Servlet容器),則Shiro默認會使用該環境的會話管理機制。而若是像控制檯程序這種獨立的應用程序,自己沒有會話管理機制,此時Shiro就會使用內部的會話管理器來給應用的開發提供一直的編程體驗。SessionDAO容許用戶使用任何類型的數據源來存儲Session數據。

        SessionDAO,(org.apache.shiro.session.mgt.eis.SessionDAO)

        用於代替SessionManager執行Session相關的增刪改查。這個接口容許咱們將任意種類的數據存儲方式引入到Session管理的基礎框架中。

    CacheManager(org.apache.shiro.cache.CacheManager):

    CacheManager用於建立和維護一些在其餘的Shiro組件中用到的Cache實例,維護這些Cache實例的生命週期。緩存用於存儲那些從後端獲取到的用戶驗證與權限控制方面的數據以提升性能,緩存是一等公民,在獲取數據時,老是先從緩存中查找,若是沒有再調用後端接口從其餘數據源獲取。Shiro容許用戶使用其餘更加現代的、企業級的數據源來替代內部的默認實現,以提供更高的性能和更好的用戶體驗。

    Cryptography 加密技術(org.apache.shiro.crypto.*):

    對於一個企業級的安全框架來講,加密算是其固有的一種特性。Shiro的crypto包中包含了一系列的易於理解和使用的加密、哈希(aka摘要)輔助類。這個包內的全部類都是通過精心設計,相比於java自己提供的那一套反人類的加密組件,Shiro提供的這套加密組件簡直不要好用太多。

    Realm(org.apache.shiro.realm.Realm):

    就如上文所提到的,Realm是鏈接Shiro和你的安全數據的橋樑。任什麼時候候當Shiro須要執行登陸或者訪問控制的時候,都須要調用已經配置的Realm的接口去獲取數據。一個應用程序能夠配置一個或者多個Realm(一般來講一種數據源配置一個)。

參考資料同一

相關文章
相關標籤/搜索