混合了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) 用户和组织单位: 是一对一的关系,同一个用户只能在某个组织单位中。比如一个员工可以同时为多个项目组(用户组)工作,但是员工只能隶属于一个公司

 

http://blog.csdn.net/chruan/article/details/7105350

你可能感兴趣的:(权限系统)