shiro權限框架詳解01-權限理論介紹

權限管理

本文介紹權限管理的理論和權限管理的一些名詞。

  • 介紹權限管理
  • 理解身份認證和授權
  • 掌握權限管理的數據模型

什麼是權限管理

基本上涉及到用戶參與的系統都要進行權限管理,權限管理屬於系統安全的範疇,權限管理實現對用戶訪問系統的控制,按照安全規則或者安全策略控制用戶可以訪問而且只能訪問自己被授權的資源
權限包括用戶認證和授權兩部分。對於需要訪問控制的資源用戶首先經過身份認證,認證通過後用戶具有該資源的訪問權限方可訪問。

用戶身份認證

概念

身份認證,就是判斷一個用戶是否是合法用戶的一個過程。最常用的簡單身份認證方式是系統通過覈對用戶輸入的用戶名和口令,看是否與系統中存儲的該用戶的用戶名和口令一致,來判斷用戶是否正確。還有其他的身份認證方式,例如指紋、刷卡等。

用戶密碼身份認證流程

這裏寫圖片描述

流程圖關鍵對象

上面的流程圖中需要理解以下關鍵對象:
- Subject:主體
訪問系統的用戶,主體可以是用戶、程序等,進行認證的都稱爲主體。

-Principal:身份信息
是主體(subject)進行身份認證的標識,標識具有唯一性,如用戶名、手機號、郵箱地址等,一個主體可以有多個身份,但必須有一個主身份(Primary Principal)

-credential:憑證信息
是隻有主體自己知道的安全信息,如密碼、證書等。

授權

概念

授權,即訪問控制,控制誰能訪問那些資源。主體進行身份認證後需要分配權限後方可訪問系統資源,對於某些資源沒有權限是無法訪問的。

授權流程

Created with Raphaël 2.1.0開始訪問系統資源身份認證是否認證通過分配權限權限控制是否擁有訪問權限繼續訪問訪問拒絕結束yesnoyesno

下面是截圖:
這裏寫圖片描述

流程圖關鍵對象

授權可簡單理解爲who對what(which)進行how操作:
- Who,即主體(Subject),主體需要訪問系統中的資源。
- What,即資源(Resource),如系統菜單、頁面、按鈕、類方法、系統商品信息等。
-How,權限/許可(Permission),規定了主體對資源操作的許可,權限離開資源沒有意義,如用戶查詢權限、用戶添加權限、某個類方法的調用權限、編號001的用戶修改權限,通過權限可知主體對那些資源都有哪些操作。
權限分爲粗粒度和細粒度,粗粒度權限是指對資源類型的權限,細粒度權限是對資源實例的權限。
主體、資源、權限關係如下圖:
主體、資源、權限關係圖

權限模型

對上面的主體、資源、權限通過數據模型表示。
主體(賬號、密碼等)
資源(資源名稱、資源地址等)
權限(權限名稱、資源id)
角色(角色名稱)
角色和權限(角色id、權限id)
主體和角色(主體id、角色id)
可以通過下圖表示:
權限模型圖

通常企業開發一般會將資源表和權限表合併。如下:
資源(資源名稱、資源訪問地址)
權限(權限名稱、資源id)
合併爲:
權限(權限名稱、資源名稱、資源訪問地址)
模型圖如下:
這裏寫圖片描述

權限分配

對主體進行權限分配,主體只允許對分配的權限範圍內的資源進行操作。權限分配的數據通常都需要進行持久化。

權限控制

權限控制有兩種方法實現,一種是基於角色的訪問控制還一種是基於資源的訪問控制。

基於角色的訪問控制

RBAC基於角色的訪問控制(Role-Based Access Control)是以角色爲中心進行訪問控制,比如:主體的角色爲總經理可以查詢企業運營報表,查詢員工工資信息等,訪問流程如下:

Created with Raphaël 2.1.0開始查詢工資信息判斷主體是否具有總經理角色無權訪問結束yesno

上圖中的判斷邏輯可以理解爲:

if(主體.hasRole("總經理")){
    查詢工資
}

缺點:以角色進行訪問 控制粒度較粗。系統擴展性較差。比如上圖查詢工資的邏輯變爲總經理或部門經理,就必須要修改代碼。

if(主體.hsRole("總經理") || 主體.hasRole("部門經理")){
    查詢工資
}
基於資源的訪問控制

RBAC基於資源的訪問控制(Resouce-Based Access Control)是以資源爲中心進行訪問控制,比如:主體必須具有查詢工資權限纔可以查詢員工的工資信息等,訪問控制流程如下:

Created with Raphaël 2.1.0開始查詢工資信息是否有查詢工資權限無權訪問結束yesno

上圖中的判斷邏輯可以理解如下:

if(主體.hasPermission('查詢工資權限標識')){
    查詢工資
}

優點:系統設計時定義好查詢工資的權限標識。即使查詢工資所需要的角色變爲部門經理也只需要將“查詢工資權限的標識”添加到“部門經理角色”的權限列表中,判斷邏輯不用修改,系統可擴展性強。

發佈了96 篇原創文章 · 獲贊 109 · 訪問量 90萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章