以下是组件的体系结构。组件还在设计过程中,请大家谈论讨论下,看看有没有更好的体系方案。
主要功能
1、 基于角色控制(RBAC)的权限管理;
2、 用户-角色-权限三种元素各自的继承组合策略;
3、 同种元素间的约束机制;
4、 冲突管理及不同级别的冲突处理策略;
5、 权限验证性能;
6、 权限信息的永久化;
范围
(1) 本组件适用于采用.net技术开发的有涉及用户权限管理的应用程序;
(2) 本组件的用户系统不能代替应用程序的用户管理系统,必须进行一定的业务扩展;
(3) 本组件在权限上有粗细度的规定,即权限只定义业务的类型权限,业务的实例权限必须由应用程序负责解决;
(4) 1.0版本包含一定程度上的二次开发接口,不包含所有期望的二次开发接口。
关键技术
1、 Session 机制的建立;
2、 约束策略和冲突检测算法的实现;
3、 数据永久化接口;
4、 性能的优化(使用全局缓存等);
5、 使用复用技术和使用合理的设计模式提高组件的可用性和可扩展性。
说明:
PRMS(Permission):许可/权限,即权限系统的最小单位,代表某一种不可在细化的权限,每个许可都有一个相应的值,该值由构成许可的许可元素所决定。
Source、Operate、Domain(Permission Element):许可元素,定义许可的内容和性质等。
Role:角色,权限分配的单位与载体,代表某类业务的范畴。
User:用户,是权限的拥有者或主体。用户和权限实现分离,通过授权管理进行绑定。
Session:会话,一个Session是个映射,一个user到多个role的映射。当User激活他所有角色的一个子集时,建立一个Session。每个Session属于某个User,每个User拥有多个Session。
SSD(Static Separation of Duty Relations):静态责任隔离,即具有冲突的元素(如PRMS、Role、User)不能组合在同一个元素。冲突是建立在元素约束的基础上的。规定,在PRMS、Role层次必须实现SSD。
DSD(Dynamic Separation of Duty Relations):动态责任隔离,即具有冲突的元素可以组合在同一个元素里面,但在一次Session不能扮演两个冲突的角色。UAgt(用户代理)必须实行DSD。
PH(PRMS Hierarchy):许可组合,即具有某类相同性质的PRMS的组合。该组合一般代表一定的功能。组成PH时必须实现SSD。
RH(Role Hierarchy):角色组合。该组合一般代表某几项业务的权限。
UH(User Hierarchy):用户组合。该组合一般和应用程序系统用户的岗位有关。
PA(Permission Assignment):许可分配,即将若干个许可分配给某个角色的过程。
UA(User Assignment):用户授权,即将若干个角色分配个某个用户的过程。
UAgt(User Agent):用户代理,即在一定的策略下,用户A授权给用户B,让用户B代理用户A的行使用户A权限,该过程必须实现DSD。