最近的工作是一個基礎(chǔ)設(shè)計,打造一個基于RBAC和ACL的權(quán)限基礎(chǔ)組件。
這個基礎(chǔ)組件的特點是:同時混合了RBAC和ACL的認(rèn)證方式,也就是說同時提供系統(tǒng)級別的授權(quán)(RBAC)和對象級別的授權(quán)(ACL)。
1. 表結(jié)構(gòu)說明
1)組織單位(Organization)
組織單位作為基本結(jié)構(gòu)單位。在人員的組織結(jié)構(gòu)中,是用來表示組織結(jié)構(gòu)樹。(例如公司)
名稱 |
定義 |
說明 |
id |
bigint |
主鍵,組織結(jié)構(gòu)id |
name |
varchar |
名稱 |
dn |
varchar |
distinguish name |
parentid |
varchar |
父組織單位的id |
2) 用戶(User)
是最小的自然單位,無法再包括子節(jié)點。對應(yīng)自然人。(例如員工)
名稱 |
定義 |
說明 |
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. 關(guān)系說明
1) 用戶組和組織單位:用戶組是可以用來分配權(quán)限,而組織單位只是一個用來容器,不能用來分配權(quán)限,可以對它做組策備應(yīng)用,組織簡單一點說像一個文件夾,用來規(guī)劃一個AD對象的。(比如一個公司可以擁有多個項目組,項目組是分配權(quán)限和資源的單位)
2) 用戶和用戶組: 是多對多的關(guān)系,同一個用戶可以隸屬于多個工作組,同一個工作組可以包含多個用戶。(比如某個員工可以同時為多個項目組工作)
3) 用戶和組織單位: 是一對一的關(guān)系,同一個用戶只能在某個組織單位中。比如一個員工可以同時為多個項目組(用戶組)工作,但是員工只能隸屬于一個公司
(夜露死苦)