日期:2014-05-16  浏览次数:20364 次

JSF项目中实现基于RBAC模型的权限管理设计(一)(转)

1?概述

???????几乎所有的项目都会涉及到权限控制的问题。在很多时候,设计者往往根据具体的需求来做权限控制而不理会通用性,但这样的设计往往造成一个项目一种模式,给日后的维护和升级扩展带来难度。

?

???????对于一个软件产品,其初级版本往往是简单的,因此权限管理也会相对简单,但随着不断的升级,功能的增加使业务模型变得越来越复杂,设计者就会发现原来的权限控制机制过于简陋了或者缺乏弹性了。这个时候再调整往往意味着要修改大量的历史代码并重新进行测试,这无疑是痛苦和让人印象深刻的。

?

???????因此,在项目设计的初期我们就需要为此作好充分的准备,这个准备包括两个方面:

l?????????选择一个正确的权限管理模型

l?????????建立一个独立的和业务代码无关的易于扩展的权限管理机制

?

2 RBAC权限管理模型

RBACRole-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联。简单地说,一个用户拥有若干角色,每一个角色拥有若干权限。这样,就构造成?-角色-权限的授权模型。在这种模型中,用户与角色之间,角色与权限之间,一般者是多对多的关系。

?

RBAC?模型作为目前最为广泛接受的权限模型。?NIST?The National Institute of Standards and Technology,美国国家标准与技术研究院)标准RBAC模型由4个部件模型组成,这4个部件模型分别是基本模型RBAC0Core RBAC)、角色分级模型RBAC1Hierarchal RBAC)、角色限制模型RBAC2Constraint RBAC)和统一模型RBAC3Combines RBAC[1]RBAC0模型如图1所示。

?

????与另一种常用的权限管理模型ACL比较,RBAC模型对权限控制的颗粒度更细,更容易扩展和富有弹性。