完整的 sso + RBAC 用戶權限控制系統設計和實現


一,概念

 

1.1 sso

 

1.2 restful auth

 

1.3 RBAC

 

RBAC:
基於角色的權限訪問控制(Role-Base-Access Control)


從RBAC0到RBAC3分別需要5到12張表
1. RBAC0
RBAC0是RBAC中的基礎模型,后續的模型都是RBAC0的改進
RBAC0引入了角色概念來解決用戶與權限之間的分離問題,用戶實際上沒有權限,而只有給用戶賦予某種角色之后,才擁有相應的權限.
RBAC0主要解決了權限的分離問題


數據表模型:
我們需要5張表來完成RBAC0
分別是:
1.用戶表(User)
字段:用戶名,密碼
2.角色表(Role)
字段:角色名,角色父ID
3.權限表(Permission)
字段:權限名,類方法名,權限父ID
4.權限角色關聯表(PA) ->多對多
字段:角色ID,權限ID
5.用戶角色關聯表(UA) ->多對多
字段:用戶ID,角色ID


現在我們實現了一個基本的RBAC0的基礎模型
我們來對這個模型加以改進:
當用戶數量過多的時候,我們需要引入用戶組的概念.角色不僅可以對用戶進行關聯,也可以對用戶組進行關聯,所現在我們需要添加三張表
添加以下三張表
6. 用戶組表(UserGroup)
7. 用戶組角色關聯表(UGA)
8. 用戶組與用戶關聯表(UUG)
在公司中,我們還有所謂的上下級關系,一個部門部長下面要管理副部長,經理等等.這時我們就要引入角色的繼承關系來表示上下級關系,體現在數據表上,就要添加一張角色繼承表
9.角色繼承關系表
到了這一步我們基本上實現了RBAC1的標准規范
而在角色的繼承中,我們其實對繼承的角色權限也要加以控制,畢竟不可能讓繼承過來的角色擁有父角色的所有權限,所以就需要多加一張對來對繼承的角色進行權限約束
10.角色權限約束
我們除了對角色進行約束,其實還可以對用戶來進行一些相關的約束來更好的保證整個系統的責任鏈分離,如果你也添加了用戶的約束規則,那么我們就基本上達到了RBAC2的規范了
11.用戶激活約束
在這個基礎上,我們再來看看權限授權這一部分
這時候,如果我們需要判定的功能權限太多,那么就可以將權限划分模塊,然后統一將角色授權給某個模塊.
12.權限模塊表
13.權限模塊與權限關聯表
14.角色與模塊的關系表

15.操作表

16.資源表
到此個人認為已經達到了比較完善的RBAC權限控制

 

二,


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM