Web应用系统中多重角色访问控制的实现

2017-04-26 21:16张迪任志宏李校红
电脑知识与技术 2017年6期

张迪+任志宏+李校红

摘要:该文对于当前Web应用系统中存在的用户身兼多职,多重角色的情况,通过控制Web应用系统中对于不同的用户角色显示对应页面,加以用户角色属性判断,扩展了RBAC模型,并实现了一种解决多重角色用户访问权限控制的方法,能实现多重角色的组合。该方法在实际项目运行中的实践结果显示该方法能够有效运用于B/S架构的Web应用系统里用户多重角色的权限控制中。

关键词:多重角色;基于角色的访问控制(RBAC);权限控制

中图分类号:TP311.1 文献标识码:A 文章编号:1009-3044(2017)06-0140-04

Abstract: For the situation that the user is a multi-role and multi roles in the current Web application system, this paper according to control the Web application system for different user roles show the corresponding page and checking user roles attribute and extended RBAC model, which is able to provide a method to solve the multi-role user access control,and to achieve a combination of various roles.The practical results of the method indicate that the method can be effectively used in the B/S structure of the Web application system, which need to process the roles of the user with multiple roles.

Key words: multi-roles; role based access control(RBAC); access rights

1 背景

访问控制(Access Control)是按照用户的身份及其所归属的某项定义组来限制用户对某些信息的访问,或者限制对某些控制功能使用的一种技术。访问控制在身份认证环节之后,根据该身份提出的资源请求加以控制。

现有的用户权限管理方法有自主访问控制(discretionary access control,DAC),强制访问控制(mandatory access control,MAC)和基于角色的访问控制(role-based access control,RBAC)[1]。目前行业对RBAC模型的研究聚焦于模型的扩展以及改进、信息系统应用方面。在RBAC中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。其中,权限是指针对信息系统的操作权力,权限赋予角色,角色分配给用户。这就极大地简化了权限的管理。在一个组织中,角色是为了完成各种工作而创造,用户则依据它的责任和资格来被指派相应的角色,用户可以很容易地从一个角色被指派到另一个角色。角色可依新的需求和系统的合并而赋予新的权限,而权限也可根据需要而从某角色中回收。角色与角色的关系可以建立起来以囊括更广泛的客观情况。其授权模型如图l所示。

RBAC模型在应用于高校内部财务结转系统过程中,在角色和用户权限中分别设置优先级约束和继承约束避免了权限冲突[2],然而对于个别用户身兼多职,并且在不同的部门承担同一职位,例如一位用户既是高校二级学院院长,又是高校教务处处长,同时还是教材审批领导,其中院长和教务处处长的角色在系统中使用的功能操作栏相同,那么对该用户进行角色权限分配后,用户一旦登录系统进入功能栏时,应用RBAC模型分配的访问控制权限此时会出现数据错误,因为承担不同部门的同一职位在系统中获取到的数据并不相同。

在此背景下,针对拥有多重角色(院长和教务处处长在系统中的角色名称均为用户部门领导)的用户,本文对RABC模型进行扩展,在不影响其他用户的前提下,实现了一种解决多重角色用户访问权限控制的方法。

2 基于多重角色的权限控制

2.1 权限控制的设计思想

在许多应用系统中,都存在一部分用户身兼多职,并且跨部門供职,这部分用户会出现承担多个部门的同一角色,这种情况下,一个用户的部门信息有多个,多个部门对应一个角色,或者多个角色。直接应用RBAC模型,在应用系统中对不同角色对应不同可见性,那么身兼多个部门职位的用户在使用系统过程中就会因为多个部门对应同一角色的原因出现数据错误的问题,鉴于此,基于多重角色的权限控制是在RBAC模型的基础上增加了为角色分配用户所属部门信息,便于对用户进行管理和角色分配时具体到一个角色对应一个部门。从而RBAC模型中的为用户分配角色就转化为用户分配角色和角色对应的部门,用户所拥有权限是为其分配所有的角色对应权限的集合,这种模式在应对各种身兼多职的情况时,具有很强的授权灵活性。扩展后的授权模型如图2所示。

对于开发基于B/S架构的Web信息系统,实质上是在开发、积累功能模块,每个功能模块都对应一些具有特定功能的页面文件,因此用户权限和页面是相联系的。

设计实例时,先为用户分配角色,每个角色对应一些可操作的功能模块,即权限,分配角色时即为用户分配该角色对应的部门信息,在用户登录时依据用户名获得其对应的角色信息,依据角色展示给用户相应的操作栏。

2.2 数据库设计

根据基于多重角色的权限控制方法的设计思路,实例中和权限控制相关的数据表主要有5个:用户表,部门表,用户与所属部门、角色的对应关系表,角色表,角色与权限的对应关系表,分别如表1~表5所示,另外还需要一个视图来判断用户所拥有的权限。

该表中一个角色对应多个权限id,每个功能模块对应多个权限id,就会形成每个角色在每个功能模块中有一到多个操作。用户的权限根据表4中对应的角色在表5中找到相应的权限,对于身兼多职的用户从表4中根据部门编号确定展示数据,根据角色找到对应权限集合。

3 基于多重角色的权限控制研究实例

3.1 多重角色的分配

实例中由管理员为身兼多职的用户分配多重角色,分配角色时选择该角色对应用户所属部门,主要代码如下:

.............

UserRole userRole=null;

userRole=new UserRole(role_id,user_id,priority,bumen_id);

if(userRoleService.save(userRole)==true){

ajaxResult = AJAXUtil.newOk("分配权限成功!");

}else{

ajaxResult = AJAXUtil.newOk("分配权限失败!");

}

….......

多重角色用户登录系统时,根据用户角色数据查询每一角色对应的部门信息,主要代码如下:

………

@Override

public List getUserRoles(Long id) {

UserRoleDAO userRoleDao = new UserRoleDAO();

List userRoles = userRoleDao

.getUserRoles(id);

RoleDAO roleDao=new RoleDAO();

BumenDAO bumenDao=new BumenDAO();

Long bumen_id;

Long role_id;

for (UserRole userRole:userRoles) {

role_id=userRole.getRole_id();

userRole.setRole(roleDao.get(role_id));

}

//多重角色:查找与角色对应的部门信息。

for (UserRole userRole:userRoles) {

bumen_id=userRole.getBumen_id(); userRole.setBumen(bumenDao.get(bumen_id));

}

return userRoles;

}

.............

角色名称

优先级(数值越小,优先级越高)

角色对应部门

${item.role.name td>

${item.priority}

${item.bumen.bmname}

…….......

3.2 生成用户界面

用户登录后验证其合法性,权限控制系统根据用户编号从系统中读取出其对应的角色信息,再根据每个角色对应的权限为用户展示出可操作的权限集合,即功能栏。如图3中左侧的部分功能栏是给用户可操作的模块,每个子模块对应链接页面,图3右侧为每个链接页面数据内容的显示区。不同权限的用户登录后的功能栏也不同。如图4。

对于身兼多职的用户,类似于跨部门或跨学院具备多重角色的用户,实例中充分考虑到用户的体验和易于交互,用户界面无需切换视图,即可处理多个职务对应的数据,达到了用户零察觉,高效办公的效果。如图5所示为用户显示多个角色对应的各部门的数据。

3.3 权限控制

1)为角色添加权限

系统实例中创建了很多功能模块,每一个新增角色都是若干个功能模块根据业务逻辑需要的自由组合,新增角色时,系统为管理员用户提供了一个树形视图,能够非常方便地选择功能模块,如图6所示。

2)多重角色用户

对于具有多重角色的用户,分配角色时增加一个部门信息,在用户访问具体的功能模块时可根据角色对应的部门信息获取数据,具有非常强的灵活性。如图7所示,由管理员为用户分配角色,分配角色时同时选择角色对应的部门信息。

4 结束语

基于B/S架构的Web应用系统,对于安全性方面的要求非常高,因此,本文针对企业、校园中个人身兼多职的情况,结合Jsp技术以及Web应用框架Struts解决了多重角色用戶的访问控制,无需根据职务切换视图,处理工作流畅高效。本文提出的方案已在一个项目中应用,运行状况良好。

参考文献:

[1] Ravi Sandhu, Edward Coyne, Hal Feinstein et al.Role-Based Access Control Models[J]. IEEE Computer, 1996, 29(1): 38-47.

[2] 邵奇峰, 韩玉民, 郑秋生. 一种混合授权的RBAC模型及其UML建模[J]. 武汉大学学报:理学版, 2014(4).

[3] 陈宫浩, 卿粼波, 滕奇志, 等. RBAC权限管理模型在油田管理系统中的应用[J]. 微型机与应用, 2017(2).

[4] 张宇一, 张保稳. 基于本体的RBAC建模及应用研究,[J].通信技术, 2017(1).

[5] 牛永洁. 改进的RBAC在设备管理系统中的应用[J].电子设计工程, 2011(5).

[6] 倪东英, 张晓丽. 基于RBAC的用户权限管理的设计与实现[J]. 济南大学学报:自然科学版, 2010(2).

[7] 樊金生, 关保灿, 李晓东.基于角色的访问控制扩展模型及其实现[J]. 计算机工程与设计,2008, 29(18).

[8] 黄伟强, 傅秀芬.基于角色的权限管理系统的研究与设计[J]. 现代计算机:专业版, 2011(5).

[9] 王志瑞, 顾问, 刘正涛. 基于RBAC模型的权限组件[J]. 计算机系统应用, 2015(3).

[10] 陈琛, 陈学广, 王煜, 等. 一种基于改进RBAC模型的EIS权限管理框架的研究与实现[J]. 计算机应用研究, 2010(10).