混合了RBAC和ACL的許可權系統(一) -- 使用者組織結構
最近的工作是一個基礎設計,打造一個基於RBAC和ACL的許可權基礎元件。
這個基礎元件的特點是:同時混合了RBAC和ACL的認證方式,也就是說同時提供系統級別的授權(RBAC)和物件級別的授權(ACL)。
1. 表結構說明
1)組織單位(Organization)
組織單位作為基本結構單位。在人員的組織結構中,是用來表示組織結構樹。(例如公司)
名稱 |
定義 |
說明 |
id |
bigint |
主鍵,組織結構id |
name |
varchar |
名稱 |
dn |
varchar |
distinguish name |
parentid |
varchar |
父組織單位的id |
2) 使用者(User)
是最小的自然單位,無法再包括子節點。對應自然人。(例如員工)
名稱 |
定義 |
說明 |
id |
bigint |
主鍵,使用者id |
name |
varchar |
名稱 |
password |
varchar |
密碼 |
dn |
varchar |
distinguish name |
parentid |
varchar |
所屬的組織單位的id |
3) 使用者組(Group)
包含了多個使用者的組(例如公司中的專案組)
名稱 |
定義 |
說明 |
id |
bigint |
主鍵,使用者組id |
name |
varchar |
顯示名稱 |
dn |
varchar |
distinguish name |
parentid |
varchar |
所屬的組織單位的id |
4) 屬性(Attributes)
用來記錄使用者、使用者組、組織單位的屬性。
名稱 |
定義 |
說明 |
id |
bigint |
主鍵,屬性id |
ownerid |
bigint |
屬性的擁有者id |
ownertype |
varchar |
屬性擁有者型別:使用者、使用者組、組織單位 |
name |
varchar |
屬性名稱 |
attribute |
Text |
屬性值 |
2. 關係說明
1) 使用者組和組織單位
2) 使用者和使用者組: 是多對多的關係,同一個使用者可以隸屬於多個工作組,同一個工作組可以包含多個使用者。(比如某個員工可以同時為多個專案組工作)
3) 使用者和組織單位: 是一對一的關係,同一個使用者只能在某個組織單位中。比如一個員工可以同時為多個專案組(使用者組)工作,但是員工只能隸屬於一個公司