Shrio(Simple,Java,Security)

JasonTam發表於2018-08-14

Shiro(Apache)

shiro框架是一個安全管理框架,主要實現認證與授權功能以及許可權的控制.
Apache Shiro是Java的一個安全框架。功能強大,使用簡單的Java安全框架,它為開發人員提供一個直觀而全面的認證,授權,加密及會話管理的解決方案
Apache shiro 與Spring security相比,功能並沒有Spring security強大,但shiro使用起來簡單,也能實現安全管理.
shiro可以非常容易的開發出足夠好的應用,其不僅可以用在JavaSE環境,也可以用在JavaEE環境。Shiro可以幫助我們完成:認證、授權、加密、會話管理、與Web整合、快取等.

Shiro的功能架構圖

image

功能 作用
Authentication 身份認證/登入.驗證使用者是不是擁有相應的身份
Authroization 授權,即許可權驗證.驗證某個已認證的使用者是否擁有某個許可權.即判斷使用者是否能做事情.常用場景:驗證某個使用者是否擁有某個角色.或者可以細微到某個使用者是否可以操作某個資源
SessionManager 會話管理,使用者登入後就是一次會話.沒有退出之前它的所有資訊都會儲存在會話中.JavaSE與JavaEE中都可以使用.
Cryptography[krɪp'tɑgrəf] 加密,保護資料的安全性.如密碼加密儲存到資料庫,而不是明文儲存.

web Supprot:Web支援,可以非常容易的整合到Web環境.

Shiro的技術架構圖

image

技術 詳解
subject(主體) 主體可以看作任何與應用互動的"使用者"(各種程式語言)
SecurityManager(安全管理) shiro的心臟.與struts2的核心過濾器的地位一樣.所有具體的互動都是通過securityManager進行控制;它管理所有subject,負責進行認證與授權,及會話,快取的管理.
Authenticator 認證器,負責主體subject的認證.該技術可以進行擴充套件,可以自定義認證.需要認證策略(Authentication Strategy),什麼情況下使用者才通過認證.
Authrizer 授權器,或者是訪問控制器,用來決定主體是否有許可權進行相應的操作.即控制著使用者能訪問應用中的哪些功能.

Realm:可以有1個或多個Realm,可以認為是安全實體資料來源,即用於獲取安全實體的;可以是JDBC實現,也可以是LDAP實現,或者記憶體實現等等;由使用者提供;注意:Shiro不知道你的使用者/許可權儲存在哪及以何種格式儲存;所以我們一般在應用中都需要實現自己的Realm

SessionManager:如果寫過Servlet就應該知道Session的概念,Session呢需要有人去管理它的生命週期,這個元件就是SessionManager;而Shiro並不僅僅可以用在Web環境,也可以用在如普通的JavaSE環境、EJB等環境;所有呢,Shiro就抽象了一個自己的Session來管理主體與應用之間互動的資料;這樣的話,比如我們在Web環境用,剛開始是一臺Web伺服器;接著又上了臺EJB伺服器;這時想把兩臺伺服器的會話資料放到一個地方,這個時候就可以實現自己的分散式會話(如把資料放到Memcached伺服器)

系統與Shiro的互動

當前使用者---->SecurityManager--->Realm

image

如果有什麼地方說得不正確,大家可以在評論寫下一起交流。希望我的文章對你有幫助。點個贊阿兄dei!

相關文章