認證就是使用者确認身份的過程,确認登入的使用者身份能夠操作的内容。
使用shiro認證分為以下幾個步驟:
1,得到主體的認證和憑據。
2,送出認證和憑據給身份驗證系統。
3,判斷是否允許通路,重試認證或者阻止通路。
其中Remember Me的功能包括兩個方法,一個是
也可以使用字元串的方式驗證
應用程式調用subject(主題),主題可以是一個使用者也可以是與系統互動的另一個系統,主題綁定shiro的權限管理,SecurityManager(安全管理),它控制與有與主題相關的安全操作。Realm(橋梁)它是安全與資料之間的橋,它封裝了比如DAO的配置資訊,可以指定連接配接的資料源,也可使用其它的認證方式,如LDAP等。
然後看一下詳細的架構圖:
Subject (org.apache.shiro.subject.Subject)
主題:與系統互動的第三方如(使用者,cron服務,第三方應用)等。
SecurityManager (org.apache.shiro.mgt.SecurityManager)
shiro系統的核心,協調主題使用的操作,驗證,配置等。
Authenticator (org.apache.shiro.authc.Authenticator)
身份驗證元件,對企圖登入系統的使用者進行身份的驗證。其中包含一個Authentication Strategy
(org.apache.shiro.authc.pam.AuthenticationStrategy)元件。配置驗證成功與失敗的條件。
Authorizer (org.apache.shiro.authz.Authorizer)
授權元件,指使用者通路特定應用程式的機制。
SessionManager (org.apache.shiro.session.mgt.SessionManager)
管理會話如何建立生命周期。其中包括的sessiondao是管理會議資料的持久操作:SessionDAO (org.apache.shiro.session.mgt.eis.SessionDAO),代表執行sessionManager的CRUD操作。
CacheManager (org.apache.shiro.cache.CacheManager)
緩存管理子產品。
Cryptography (org.apache.shiro.crypto.*)
加密子產品。
Realms (org.apache.shiro.realm.Realm)
多種方式處理的橋梁。
多種配置方式:
與spring,jboss,guice等進行配置。
1,程式設計方式配置
例如:
2,sessionManager對象圖
如果你想使用sessionManager配置自定義的sessionDao資訊,進行自定義會話管理
3,INI配置
1) 建立一個INI從SecurityManager
可以從多種方式讀取INI配置檔案的資訊,如檔案系統,類路徑等
2) 通過Ini執行個體讀取
類似于Properties的方式
加載之後就可以操作INI的配置了。
4,INI配置
每一個節點都是單獨的,不可以重複,注釋可以使用#或者;
配置示例
1) [main]
配置sessionManager的執行個體和它的依賴。
定義一個對象
簡單的屬性設定
配置資訊将轉入到對應的set方法中
參考值
你可以使用$符号引用先前定義的一個對象的執行個體
嵌套屬性
将被注入到下面的程式中
引用其它的屬性
以鍵值的配置方式
2) [users]
在使用者比較少的情況下這種配置資訊是有效的
3) [roles]
如果角色資訊比較少的情況下可以使用這項配置
4) [urls]
配置url等可通路的資源資訊。