混合了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) 用户组和组织单位:用户组是可以用来分配权限,而组织单位只是一个用来容器,不能用来分配权限,可以对它做组策备应用,组织简单一点说像一个文件夹,用来规划一个AD对象的。(比如一个公司可以拥有多个项目组,项目组是分配权限和资源的单位)
2) 用户和用户组: 是多对多的关系,同一个用户可以隶属于多个工作组,同一个工作组可以包含多个用户。(比如某个员工可以同时为多个项目组工作)
3) 用户和组织单位: 是一对一的关系,同一个用户只能在某个组织单位中。比如一个员工可以同时为多个项目组(用户组)工作,但是员工只能隶属于一个公司