一劣光、背景
shiro是apache的一個(gè)開源框架袜蚕,是一個(gè)權(quán)限管理的框架,實(shí)現(xiàn) 用戶認(rèn)證绢涡、用戶授權(quán)牲剃。
二、架構(gòu)
- Authenticator:認(rèn)證器雄可,主體進(jìn)行認(rèn)證最終通過authenticator進(jìn)行
- Authorizer:授權(quán)器凿傅,主體進(jìn)行授權(quán)最終通過authorizer進(jìn)行sessionManager:web應(yīng)用中一般是用web容器對(duì)session進(jìn)行管理,shiro也提供了一套session管理方式
- SessionDao:通過SessionDao管理session數(shù)據(jù)数苫,以下是SessionDao的方法
- Cache Manager:緩存管理器聪舒,主要對(duì)session和授權(quán)數(shù)據(jù)進(jìn)行緩存,比如將授權(quán)數(shù)據(jù)通過cacheManager進(jìn)行緩存管理虐急,和ehcache整合對(duì)緩存數(shù)據(jù)進(jìn)行管理箱残。
三、核心組件
三個(gè)核心組件:Subject, SecurityManager 和 Realms.
Subject:即"當(dāng)前操作用戶"。但是被辑,在Shiro中燎悍,Subject這一概念并不僅僅指人,也可以是第三方進(jìn)程盼理、后臺(tái)帳戶(Daemon Account)或其他類似事物谈山。它僅僅意味著"當(dāng)前跟軟件交互的東西"。但考慮到大多數(shù)目的和用途宏怔,你可以把它認(rèn)為是Shiro的"用戶"概念奏路。
Subject代表了當(dāng)前用戶的安全操作,SecurityManager則管理所有用戶的安全操作臊诊。
SecurityManager:它是Shiro框架的核心鸽粉,典型的Facade模式,Shiro通過SecurityManager來管理內(nèi)部組件實(shí)例妨猩,并通過它來提供安全管理的各種服務(wù)潜叛。
Realm: Realm充當(dāng)了Shiro與應(yīng)用安全數(shù)據(jù)間的"橋梁"或者"連接器"。也就是說壶硅,當(dāng)對(duì)用戶執(zhí)行認(rèn)證(登錄)和授權(quán)(訪問控制)驗(yàn)證時(shí),Shiro會(huì)從應(yīng)用配置的Realm中查找用戶及其權(quán)限信息销斟。
從這個(gè)意義上講庐椒,Realm實(shí)質(zhì)上是一個(gè)安全相關(guān)的DAO:它封裝了數(shù)據(jù)源的連接細(xì)節(jié),并在需要時(shí)將相關(guān)數(shù)據(jù)提供給Shiro蚂踊。當(dāng)配置Shiro時(shí)约谈,你必須至少指定一個(gè)Realm,用于認(rèn)證和(或)授權(quán)犁钟。配置多個(gè)Realm是可以的棱诱,但是至少需要一個(gè)。
Shiro內(nèi)置了可以連接大量安全數(shù)據(jù)源(又名目錄)的Realm涝动,如LDAP迈勋、關(guān)系數(shù)據(jù)庫(JDBC)、類似INI的文本配置資源以及屬性文件等醋粟。如果缺省的Realm不能滿足需求靡菇,你還可以插入代表自定義數(shù)據(jù)源的自己的Realm實(shí)現(xiàn)。
四米愿、提供的功能
Authentication:用戶認(rèn)證(登錄)
Authorization:權(quán)限控制
Session Management:會(huì)話管理
Cryptography:數(shù)據(jù)加密
Web Support:支持web的API
Caching:緩存
Concurrency:支持多線程應(yīng)用程序
Testing:測試的支持
“Run As”:假設(shè)一個(gè)用戶為另一個(gè)用戶的身份
“Remember Me”:在Session中保存用戶身份