Esoft-ACL 介绍
1?????? 前言 我在开发Esoft-XPCMS及Esoft-myOffice1.0过程中,对访问控制系统的设计偏向个性化,即系统的每一个应用都有自己的权限控制体系,如Esoft-XPCMS的新闻发布、产品发布都有自己的权限控制体系,Esoft-myOffice中的论坛帖子管理、电子公告管理等也有自己的权限控制体系,当要往Esoft-myOffice中加入新的应用子系统时,又必须单独为这个新应用设计权限系统,这样一方面增加了工作量,另一方面也给用户的权限分配与维护带来一定的难度。为了降低应用系统与权限访问控制系统的耦合度,提高系统的可扩展性,Esoft-ACL应运而生。通过Esoft-ACL可实现对所有应用系统的统一访问控制.在Esoft-ACL中,访问控制系统可分解为权限资源、权限控制类型、角色三都之间的组合关系。
2?????? 名词解释 权限资源:指的是权限要控制的资源对象,如我们要为论坛帖子管理设立权限,那么这里的论坛帖子就是权限资源;再如网站信息发布,我们要控制不同人员对不同栏目的维护权限,这里的栏目也是权限资源。在Esoft-ACL中,每一个权限资源都要用唯一标识符来表示。权限资源根据是否具有子分类可以分成两种,一种是没有子分类的权限资源,一种是有子分类的权限资源。没有子分类的权限资源如“意见建议”,有子分类的权限资源如“网站栏目”,“网站栏目”这类资源有树状结构的分类,不同的用户对不同的分类可能享有不同的权限。
?
权限控制类型:指的是权限控制访问的接口类型,是权限资源的动作类型,如添加、删除、修改或其它动作。权限控制类型在特定的权限资源环境下具有包含关系,如在“网站信息”这个权限资源里,“修改”权限控制类型就应包含“浏览”权限。在Esoft-ACL中,每一个权限控制类型都要用唯一标识符来表示。
用户:权限主体的最小单位,是角色、群组的基本组成元素,一个用户可以同时具备多种角色。
角色:用户在各种场合下,都会扮演具有一定权利与义务的角色。角色是权限的最直接主体,用户是否具有访问权限资源的权限就要看其所扮演的角色是否被分配访问权限资源的权限。角色可以分为三种类型,一种是超级用户类型,一种是基础角色类型,还有一种是用户自定义类型,属于超级用户类型的则不经过Esoft-ACL系统验证,直接享有系统所有权限;基础角色是系统不可少的角色,用户不可以删除;自定义类型的角色则是由用户自由定制,可以自由修改或删除。
群组:指的是一群具有多种角色的用户群体,一个群组可以具有多种角色,多个用户可以组成一个群组,属于该群组的用户具备该群组中所有角色所具备权限的并集。如“开发部”这个群组里有A用户,B用户,C用户,同时“开发部”具有“公司成员”、“开发部成员”、“技术员”这三种角色,那么A、B、C三个用户就具有“公司成员”、“开发部成员”、“技术员”这三种角色所享有的访问应用系统权限的并集。
权限:指的是角色、权限资源、权限控制类型三者的线性关系,表现为在某种权限资源环境下,某些角色在某种权限控制类型上享有访问或操作权限。
3?????? 系统模型 3.1. 权限并集
在Esoft-ACL中,权限交叉是采用并集处理,如上图,假设某个用户具有角色A、角色B、角色C三种角色,那么该用户所享有的权限就是如上图所示为三个角色的并集。
3.2. 映射关系
在Esoft-ACL中,一个群组可以具有多种角色,1个角色也可以分配给多个群组,二者是多对多的关系,同理,群组与用户,角色与用户都是多对多的关系。权限资源与权限控制类型也是多对多的关系。
3.3. 访问控制模型 ?
?
这里的Clients就是用户,用户登陆系统后,要访问应用系统Applications或者叫权限资源,首先要进行身份验证,身份验证需要三组参数:角色数组,要访问的权限资源代码,权限控制类型代码。这三组参数通过Esoft-ACL提供的API接口或WebServices接口,传给Esoft-ACL内核处理,验证成功,则返回TRUE,允许访问Applications,验证失败,返回FALSE,拒绝访问Applications。通过提供的WebServices接口,可以实现跨服务器的分布式验证,为系统的企业级应用提供了接口。
3.4. 统一访问接口 ?
?为了保证访问控制系统的维护及用户操作方便,在Esoft-ACL中统一了权限访问接口,即只对角色授予权限,用户与群组都要通过角色再能与权限建立联系。因此用户A具备哪些权限,要看用户A具有哪些角色,隶属于哪些群组,这些群组又具有哪些角色,然后根据这些角色集合去得出相应的权限并集。
3.5. 资源与控制类型的关系模型 ?
如上图所示,假设现有应用系统:意见建议系统、网站信息发布系统等应用系统。那么我们可以在Esoft-ACL中建立相应的两种权限资源——意见建议,网站信息发布,建立完权限资源后,还要建立相关的权限控制类型,添加相关控制接口,如浏览、添加、修改、删除等。然后在这些权限资源与权限控制类型间建立映射关系,从而形成真正的权限(Privilege)。在建立映射过程中,有些权限资源要求权限控制类型之间存在包含关系,如在意见建议系统中,要修改意见建议,首先就必须具备浏览意见建议权限,因此可以设定意见建议中,修改权限包含浏览权限。
3.6. API模型
?
?
4?????? Esoft-ACL截图 4.1??? 角色管理 ?
4.2??? 菜单访问权限分配 ? 4.3??? 角色权限分配 ? 4.4??? 有子分类的权限资源权限分配 ?4.5??? 无子分类的权限资源权限分配
?
4.6??? 权限控制类型与权限资源的映射
说明:图中右边的意见建议à删除[浏览、删除自己发表,浏览自己发表]表示意见建议权限资源的删除权限中包含了浏览、删除自己发表,浏览自己发表其他三种权限。
?
注:以上内容仅为作者在开发软件过程中的一些体会,心得,系统中肯定还有不足之处,往专家指点。MSN:misnet@hotmail.com,QQ:19040738,http://www.risensoft.com,http://www.ehero.net
?