【修真院java小課堂】shiro 的簡單介紹
大家好,我是IT修真院武漢分院第十五期學員,一枚正直純潔善良的JAVA程式設計師。
今天給大家分享一下,修真院官網JAVA任務十的一個知識點:shiro
1.背景介紹
什麼是Apache Shiro?
Apache Shiro(讀作“sheeroh”,即日語“城”)是一個開源安全框架,提供身份驗證、授權、密碼和會話管理。Shiro框架直觀、易用,同時也能提供健壯的安全性。
Shiro的產生背景:Shiro的前身是JSecurity。 2004年,Les Hazlewood和Jeremy Haile創辦了Jsecurity。當時他們找不到適用於應用程式級別的合適Java安全框架,同時又對JAAS非常失望。2010年9月22日,Shrio成為Apache軟體基金會的頂級專案(TLP)。 Java認證和授權服務(Java Authentication and Authorization Service,簡稱JAAS)是一個Java以使用者為中心的安全框架,作為Java以程式碼為中心的安全的補充。自Java執行環境(JRE) 1.4起,JAAS就被整合到JRE,而之前是作為一個擴充套件庫由Sun公司提供的。
什麼是許可權管理?
許可權管理,一般指根據系統設定的安全規則或者安全策略,使用者可以訪問而且只能訪問自己被授權的資源,不多不少。
許可權管理體系幾乎可以出現在任何系統裡面,只要專案存在有使用者和密碼的相關概念。
很多人常將“使用者身份認證”、“密碼加密”、“系統管理”等概念與許可權管理概念混淆。
許可權管理就是管理使用者對於資源的操作。
本 CRM 系統的許可權(也稱作資源)是基於角色操作許可權來實現的,即RBAC(Role-Based Access Control,基於角色的訪問控制),就是使用者通過角色與許可權進行關聯。
簡單地說,一個使用者擁有若干角色,每一個角色擁有若干許可權。這樣,就構造成“使用者-角色-許可權”的授權模型。
在這種模型中,使用者與角色之間,角色與許可權之間都是多對多的關係,為了實現表之間多對多的關係,必須將一個多對多的關係通過一箇中間表分為兩個一對多的關係。
因此引入中間表,使用者角色表和角色許可權表。
可以用 Apache Shiro做下面的事情
驗證使用者
對使用者執行訪問控制,如:1、判斷使用者是否分配了一定的安全形色。2、判斷使用者是否被授予完成某個操作的許可權
判斷使用者是否擁有角色admin
判斷使用者是否擁有訪問的許可權
在任何環境下使用 Session API
可以使用多個使用者資料源。例如一個是oracle使用者庫,另外一個是mysql使用者庫
單點登入(SSO)功能
“Remember Me”服務 ,類似購物車的功能,shiro官方建議開啟
2.知識剖析
Shiro 依賴的 API
Authentication —— 認證,使用者身份識別,常被稱為使用者“登入”,who are you?
Authorization —— 授權,訪問控制過程,決定“誰”訪問“什麼”,who can do what?
Session Management —— 會話管理,使用者session管理器,使用者相關的時間敏感的狀態
Cryptography —— 密碼加密,把JDK中複雜的密碼加密方式進行封裝,保護或隱藏資料防止被偷窺
還有其他的功能來支援和加強這些不同應用環境下安全領域的關注點。特別是對以下的功能支援:
Web支援:Shiro 提供的 web 支援 api ,可以很輕鬆的保護 web 應用程式的安全。
併發:Apache Shiro 支援多執行緒應用程式的併發特性。
測試:支援單元測試和整合測試,確保程式碼和預想的一樣安全。
“Run As”:這個功能允許使用者假設另一個使用者的身份(在許可的前提下)。
“Remember Me”:跨 session 記錄使用者的身份,只有在強制需要時才需要登入。
3.常見的問題
如何與springboot整合?
整合shiro大概分這麼一個步驟:
4.解決辦法
整合shiro大概分這麼一個步驟:
(a) pom.xml中新增Shiro依賴;
(b) 注入Shiro Factory和SecurityManager。
(c) 身份認證
(d) 許可權控制
5.編碼實戰
6.擴充套件思考
7.參考文獻
spring boot shiro許可權管理
http://412887952-qq-com.iteye.com/blog/2299777
Realm 詳解
http://jinnianshilongnian.iteye.com/blog/2022468
鳴謝
感謝觀看,如有出錯,懇請指正
BY : 方廣輝
1.Shiro的整個架構是怎麼樣的?
2.Shiro的rememberMe適用場景?
在資料訪問要求不嚴格的場景,比如微博、論壇之類的,使用者不用等了即可訪問。
3. 什麼是RABC?
基於角色的許可權訪問控制(Role-Based Access Control)作為傳統訪問控制(自主訪問,強制訪問)的有前景的代替受到廣泛的關注。在RBAC中,許可權與角色相關聯,使用者通過成為適當角色的成員而得到這些角色的許可權。這就極大地簡化了許可權的管理。在一個組織中,角色是為了完成各種工作而創造,使用者則依據它的責任和資格來被指派相應的角色,使用者可以很容易地從一個角色被指派到另一個角色。角色可依新的需求和系統的合併而賦予新的許可權,而許可權也可根據需要而從某角色中回收。角色與角色的關係可以建立起來以囊括更廣泛的客觀情況。