Shiro 學習筆記(一) shiro簡介

2022-08-03 03:45:14 字數 1740 閱讀 2919

apache shiro 是乙個安全框架。說白了,就是進行一下 許可權校驗,判斷下這個使用者是否登入了,是否有許可權去做這件事情。

shiro 可以幫助我們完成:認證、授權、加密、會話管理、與web 整合、快取等。

其基本功能點 如下圖:

authentication  : 身份認證/登入,驗證使用者是不是擁有相應的身份

authorization : 授權,即許可權驗證,驗證某個已認證的使用者是否擁有某個許可權;即判斷使用者是否能做事情,常見的如:驗證某個使用者是否擁有某個角色,或者 細粒度的驗證某個使用者對某個資源是否具有某個許可權

session manager:會話管理,即使用者登入後就是一次會話,在沒有退出之前,他的所有資訊都會在會話中

cryptography:加密,保護資料的安全性,如密碼加密儲存到資料庫

web support:可以非常容易的整合到web 環境中

caching:快取,比如使用者登入後,其使用者資訊、擁有的角色/許可權 不必每次去查,這樣可以提高效率。

concurrency: shiro 支援多執行緒應用的併發驗證,即如在乙個執行緒中開啟另乙個執行緒,能把許可權自動傳播過去

testing :提供測試支援

run as: 允許乙個使用者假裝另乙個使用者(如果他們允許)的身份進行訪問

remember me:即一次登入後,下次再來的話不用登入了

shiro 不會去維護使用者、維護許可權,這些需要自己去設計/提供,然後通過相應的介面注入給 shiro 即可

從應用程式的角度來觀察如何使用 shiro 完成工作,如下圖

應用程式直接互動的物件式subject

subject:主體,代表了當前使用者(即與當前應用互動的物件,如爬蟲、機械人等)。所有的subject 都繫結到了 securitymanager,與subject的所有互動都會委託給securitymanager;可以把subject認為是乙個門面;securitymanager才是實際的執行者;

securitymanager:安全管理器,即所有與安全有關的操作都會與 securitymanager互動。類似springmvc的dispatcherservlet 前端控制器

realm:域,shiro 是從 realm 獲取安全資料(如使用者、角色、許可權),就是說securitymanager 要驗證使用者身份,那麼它需要從realm 獲取相應的使用者進行比較以確定使用者身份是否合法,也需要從realm 得到使用者相應的角色/許可權進行驗證使用者是否能進行操作;可以把realm 看成datasource

對我們而言,乙個shiro 應用:

1、應用** 通過 subject 來進行認證和授權,而subject又委託給securitymanager

2、我們需要給shiro 的securitymanager 注入realm,從而讓securitymanager 能得到合法的使用者及其許可權進行判斷

總結:shiro 不提供維護使用者/許可權,而是通過realm讓開發人員自己注入

shiro架構,如下圖:

注:本學習筆記**於開濤的《跟我學shiro》,詳細請看原部落格

Shiro學習筆記之Shiro加密

雜湊演算法一般用於生成資料的摘要資訊,是一種不可逆的演算法,一般適合儲存密碼之類的資料,常見的雜湊演算法如 md5 sha 等。一般進行雜湊時最好提供乙個 雜訊,這樣可以使破解密碼的難度變大。以下是md5加密演算法的乙個演示 public class tes 5 此介面提供加密密碼和驗證密碼的功能。...

Shiro學習筆記

shiro 許可權選單框架.apache shiro是乙個強大而靈活的開源安全框架,它能夠乾淨利落地處理身份認證,授權,企業會話管理和加密。使用者認證 使用者認證,使用者去訪問系統,系統要驗證使用者身份的合法性。最常用的使用者身份驗證的方法 1 使用者名稱密碼方式 2 指紋打卡機 3 基於證書驗證方...

shiro學習筆記

作為乙個要轉後端的人,不了解安全框架怎麼能行呢,最近看了些web專案很多都使用shiro,shiro到底好在 呢?本篇部落格僅作為個人的shiro學習歷程記錄。很多內容參考張開濤先生的 跟我學shiro教程 侵刪。shiro給人的印象是乙個簡單實用的安全框架,相比於spring security,沒...