教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

Shiro簡介

更新時間:2018年10月24日16時04分 來源:傳智播客 瀏覽次數(shù):

  Apache Shiro是Java的一個安全框架。目前,使用Apache Shiro的人越來越多,因為它相當(dāng)簡單,對比Spring Security,可能沒有Spring Security做的功能強(qiáng)大,但是在實際工作時可能并不需要那么復(fù)雜的東西,所以使用小而簡單的Shiro就足夠了。對于它倆到底哪個好,這個不必糾結(jié),能更簡單的解決項目問題就好了。

  Shiro架構(gòu)與功能介紹

  1.認(rèn)證與授權(quán)相關(guān)基本概念

  兩個基本的概念

  安全實體:系統(tǒng)需要保護(hù)的具體對象數(shù)據(jù)

  權(quán)限:系統(tǒng)相關(guān)的功能操作,例如基本的CRUD

  Authentication:身份認(rèn)證/登錄,驗證用戶是不是擁有相應(yīng)的身份;

  Authorization:授權(quán),即權(quán)限驗證,驗證某個已認(rèn)證的用戶是否擁有某個權(quán)限;即判斷用戶是否能做事情,常見的如:驗證某個用戶是否擁有某個角色。或者細(xì)粒度的驗證某個用戶對某個資源是否具有某個權(quán)限;

  Session Manager:會話管理,即用戶登錄后就是一次會話,在沒有退出之前,它的所有信息都在會話中;會話可以是普通JavaSE環(huán)境的,也可以是如Web環(huán)境的;

  Cryptography:加密,保護(hù)數(shù)據(jù)的安全性,如密碼加密存儲到數(shù)據(jù)庫,而不是明文存儲;

  Web Support:Web支持,可以非常容易的集成到Web環(huán)境;

  Caching:緩存,比如用戶登錄后,其用戶信息、擁有的角色/權(quán)限不必每次去查,這樣可以提高效率;

  Concurrency:shiro支持多線程應(yīng)用的并發(fā)驗證,即如在一個線程中開啟另一個線程,能把權(quán)限自動傳播過去;

  Testing:提供測試支持;

  Run As:允許一個用戶假裝為另一個用戶(如果他們允許)的身份進(jìn)行訪問;

  Remember Me:記住我,這個是非常常見的功能,即一次登錄后,下次再來的話不用登錄了。

  2.Shiro四大核心功能:Authentication,Authorization,Cryptography,Session Management

  

  Shiro架構(gòu)

  3.Shiro三個核心組件:Subject, SecurityManager 和 Realms.

  Subject:主體,代表了當(dāng)前“用戶”,這個用戶不一定是一個具體的人,與當(dāng)前應(yīng)用交互的任何東西都是Subject,如網(wǎng)絡(luò)爬蟲,機(jī)器人等;即一個抽象概念;所有Subject都綁定到SecurityManager,與Subject的所有交互都會委托給SecurityManager;可以把Subject認(rèn)為是一個門面;SecurityManager才是實際的執(zhí)行者;

  SecurityManager:安全管理器;即所有與安全有關(guān)的操作都會與SecurityManager交互;且它管理著所有Subject;可以看出它是Shiro的核心,它負(fù)責(zé)與后邊介紹的其他組件進(jìn)行交互,如果學(xué)習(xí)過SpringMVC,你可以把它看成DispatcherServlet前端控制器;

  Realm:域,Shiro從Realm獲取安全數(shù)據(jù)(如用戶、角色、權(quán)限),就是說SecurityManager要驗證用戶身份,那么它需要從Realm獲取相應(yīng)的用戶進(jìn)行比較以確定用戶身份是否合法;也需要從Realm得到用戶相應(yīng)的角色/權(quán)限進(jìn)行驗證用戶是否能進(jìn)行操作;可以把Realm看成DataSource,即安全數(shù)據(jù)源。



作者:傳智播客JavaEE培訓(xùn)學(xué)院
首發(fā):http://java.itcast.cn/

0 分享到:
和我們在線交談!