spring-security-学习笔记-01-基本概念
Spring Security OAuth2.0認證授權
文章目錄
- Spring Security OAuth2.0認證授權
- 配套資源
- 1.基本概念
- 1.1.什么是認證
- 1.2 什么是會話
- 1.2 什么是授權
- 1.3 授權的數據模型
- 1.4 RBAC
- 1.4.1 基于角色的訪問控制
- 1.4.2 基于資源的訪問控制
配套資源
企業開發首選的安全框架Spring Security深入淺出
完整視頻:http://yun.itheima.com/course/605.html?2003sxk
配套資料:https://pan.baidu.com/s/1ngq89PvQPCZIUqVxbq4WPQ 提取碼:uzos
2天快速入門Spring Security OAuth2.0認證授權
完整視頻:http://yun.itheima.com/course/597.html?2003sxk
配套資料:https://pan.baidu.com/s/1w2MRKuQAdJx-eki_4CAK7w 提取碼:6vc5
1.基本概念
1.1.什么是認證
??認證 :用戶認證就是判斷一個用戶的身份是否合法的過程,用戶去訪問系統資源時系統要求驗證用戶的身份信 息,身份合法方可繼續訪問,不合法則拒絕訪問。常見的用戶身份認證方式有:用戶名密碼登錄,二維碼登錄,手 機短信登錄,指紋認證等方式。
1.2 什么是會話
??用戶認證通過后,為了避免用戶的每次操作都進行認證可將用戶的信息保證在會話中。會話就是系統為了保持當前 用戶的登錄狀態所提供的機制,常見的有基于session方式、基于token方式等。
?? 基于session的認證方式如下圖:
??它的交互流程是,用戶認證成功后,在服務端生成用戶相關的數據保存在session(當前會話)中,發給客戶端的 sesssion_id 存放到 cookie 中,這樣用戶客戶端請求時帶上 session_id 就可以驗證服務器端是否存在 session 數 據,以此完成用戶的合法校驗,當用戶退出系統或session過期銷毀時,客戶端的session_id也就無效了。
??基于token方式如下圖:
??它的交互流程是,用戶認證成功后,服務端生成一個token發給客戶端,客戶端可以放到 cookie 或 localStorage 等存儲中,每次請求時帶上 token,服務端收到token通過驗證后即可確認用戶身份。
1.2 什么是授權
為什么要授權?
?? 認證是為了保證用戶身份的合法性,授權則是為了更細粒度的對隱私數據進行劃分,授權是在認證通過后發生的, 控制不同的用戶能夠訪問不同的資源。
??授權: 授權是用戶認證通過根據用戶的權限來控制用戶訪問資源的過程,擁有資源的訪問權限則正常訪問,沒有 權限則拒絕訪問。
1.3 授權的數據模型
??如何進行授權即如何對用戶訪問資源進行控制,首先需要學習授權相關的數據模型。
??授權可簡單理解為Who對What(which)進行How操作,包括如下:
??Who,即主體(Subject),主體一般是指用戶,也可以是程序,需要訪問系統中的資源。
??What,即資源 (Resource),如系統菜單、頁面、按鈕、代碼方法、系統商品信息、系統訂單信息等。系統菜單、頁面、按 鈕、代碼方法都屬于系統功能資源,對于web系統每個功能資源通常對應一個URL;系統商品信息、系統訂單信息 都屬于實體資源(數據資源),實體資源由資源類型和資源實例組成,比如商品信息為資源類型,商品編號 為001 的商品為資源實例。
?? How,權限/許可(Permission),規定了用戶對資源的操作許可,權限離開資源沒有意義, 如用戶查詢權限、用戶添加權限、某個代碼方法的調用權限、編號為001的用戶的修改權限等,通過權限可知用戶 對哪些資源都有哪些操作許可。
??主體、資源、權限關系如下圖:
主體、資源、權限相關的數據模型如下:
主體(用戶id、賬號、密碼、…)
資源(資源id、資源名稱、訪問地址、…)
權限(權限id、權限標識、權限名稱、資源id、…)
角色(角色id、角色名稱、…)
角色和權限關系(角色id、權限id、…)
主體(用戶)和角色關系(用戶id、角色id、…)
主體(用戶)、資源、權限關系如下圖:
通常企業開發中將資源和權限表合并為一張權限表,如下:
資源(資源id、資源名稱、訪問地址、…)
權限(權限id、權限標識、權限名稱、資源id、…)
合并為: ==》
權限(權限id、權限標識、權限名稱、資源名稱、資源訪問地址、…)
修改后數據模型之間的關系如下圖:
1.4 RBAC
如何實現授權?業界通常基于RBAC實現授權。
1.4.1 基于角色的訪問控制
??RBAC基于角色的訪問控制(Role-Based Access Control)是按角色進行授權,比如:主體的角色為總經理可以查 詢企業運營報表,查詢員工工資信息等,訪問控制流程如下:
根據上圖中的判斷邏輯,授權代碼可表示如下:
??如果上圖中查詢工資所需要的角色變化為總經理和部門經理,此時就需要修改判斷邏輯為“判斷用戶的角色是否是 總經理或部門經理”,修改代碼如下:
if(主體.hasRole("總經理角色id") || 主體.hasRole("部門經理角色id")){ 查詢工資 }根據上邊的例子發現,當需要修改角色的權限時就需要修改授權的相關代碼,系統可擴展性差。
1.4.2 基于資源的訪問控制
??RBAC基于資源的訪問控制(Resource-Based Access Control)是按資源(或權限)進行授權,比如:用戶必須 具有查詢工資權限才可以查詢員工工資信息等,訪問控制流程如下:
根據上圖中的判斷,授權代碼可以表示為:
if(主體.hasPermission("查詢工資權限標識")){ 查詢工資 }優點:系統設計時定義好查詢工資的權限標識,即使查詢工資所需要的角色變化為總經理和部門經理也不需要修改 授權代碼,系統可擴展性強。
??權限精度不同,需要進行的操作也不同。角色權限的精度比資源權限精度小,精度越高,權限控制相對方便些。
總結
以上是生活随笔為你收集整理的spring-security-学习笔记-01-基本概念的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Element-UI-快速入门(极简教程
- 下一篇: ASP.NET MVC V2 Previ