1. 什么是權限管理
一般來說,只要有用戶參與,那么該系統都會需要權限管理,權限管理實現了對用戶訪問系統 指定功能的限制,按照管理員定義的安全規則或權限策略,限制用戶只能訪問自己被授權的那些資源路徑。
權限管理包括用戶認證和授權兩部分(俗稱登錄和鑒權)。也就是說先要進行用戶的登錄,登錄以后會對用戶訪問的功能模塊(即:訪問資源的url路徑)進行權限驗證。
2. 用戶認證(用戶登錄)
身份認證,簡單來說就是登錄。檢驗一個用戶是否為合法用戶的業務處理過程。最常見的方式為系統對用戶輸入的用戶名和密碼判斷是否匹配數據庫中的記錄。
除此之外還有指紋認證,一卡通認證,臉部掃描,這些都需要硬件設備,比如指紋采集儀,pose機,刷臉(臉部識別系統/iphoneX)等。
3. 登錄認證流程
流程中的出現主要對象:
Subject:主體,大部分情況下就是用戶,但也可以是api接口(rest服務,手機端訪問等),去訪問系統的功能,系統需要對Subject進行身份認證。
Principal:身份信息,一般來說是唯一的,一個主體可以有多個身份,但是都有一個主身份信息(primary principal)。主要體現在賬戶系統和子賬戶。
Credential:憑證token,可以是密碼 、證書、指紋、人臉等。
總結一句話:主體用戶在進行身份認證時需要提供身份信息和憑證信息。簡單來說就是登錄。
4. 用戶授權(驗證用戶是否擁有訪問的權限)
授權,即訪問控制,控制用戶能否訪問哪些資源。在用戶進行身份認證后需要分配權限方可訪問系統的資源,對於某些資源沒有權限是無法訪問的
流程中的出現主要對象:
Subject:主體,此時的主體已經經過登錄之后認證過了的。
Resource:主體用戶所訪問的資源或者功能。比如用戶要刪除一個員工記錄,這個員工記錄在數據庫中的主鍵pid為1001,那么這個資源就是1001這條在數據庫中所對應的記錄。在java中就是一個對象。或者查詢所有員工的頁面,這些員工所在數據庫中的數據集也是這個資源resource。
Permission:憑證token,可以是密碼 、證書、指紋、人臉等。
總結一句話:[主體用戶] 對 [資源] 進行 [增刪改查] 的操作
<未完待續...>
具體內容同步更新文章以及視頻到公眾號,知乎,豆瓣,cnblogs以及新浪微博,以官網itzixi.com為主