任伟++秦进
摘要:阐述了基于角色的权限管理模型(RBAC[1])在高等教育信息化平台中的运用,提出了RBAC的权限管理的解决方案。将RBAC模型应用到系统中增强了系统的安全性。系统采用三层架构[2],基于Java平台实现,项目中使用了S2SH[3]框架,RBAC模型的实现是基于Struts2的原有代码的重写,保证了技术上的可靠性,有效地解决了信息化平台中的遇到的权限和安全问题。
关键词:Java;S2SH;RBAC;访问控制
中图分类号:TP315 文献标识码:A 文章编号:1009-3044(2015)33-0008-03
Research and Implementation of Access Control Management Based on RBAC of Informational Platform
REN Wei1, QIN Jin2
(College of Computer Science and Technology, GuiZhou University, Guiyang 550025, China)
Abstract:The authors present some kinds of technology regarding as access control of management based on RBAC[1](role-based access control).In the advanced educational management system,we use RBAC to solve privilege problem,and the model-RBAC can enforce the security of the system.RBAC has realized the logic separation of the users and the access permission and reduced the complexity of the authorization management as well as the cost of the management.The model implemented by Java using S2SH framework[2].The entire system based on 3-tier architecture[2].
Key words:Java; S2SH; Access Control; RBAC
信息化建设已经深入到社会的各个领域,在高校的信息化建设浪潮中,信息化平台具有举足轻重的地位。特别随着技术的发展,教育信息化问题迫在眉睫。随着各个高校信息化水平的提高,各个学校纷纷依托自身的资源,将学校的优势学科的教学资源放到自己的信息化平台上,供学生和教师观看 。这一种模式虽然能实现一定的资源共享的目的,但是也仅仅是自己校园内的资源共享,并没有实现一个省的高校教育资源的共享。因此,我们希望能够构建一个全省高校都可以实现资源共享的信息化平台。高等教育信息化平台能够整合各个高校的优势教学资源,实现优势教学资源的共享,使得广大学生和老师能够快速得到各个学校的优势教学资源。不论是学生还是老师都能够得到双赢。在学生层面来看,能够获取其他高校的优势学科教学资源能够提前预习,同时也能够更好的理解自己的学科,提升自己的视野和对所学知识的理解。在教师层面,教师能够看到其他学校的教学资源通过观摩同行如何传授知识,能够做到提升自己的教学水平。在学校层面来说,实现各个高校的优势教学资源共享有助于提升学生的水平,也有助于提升学校的整体教学水平,提升学校的科研能力。有助于打破原有的各个学校资源的鼓励情况,形成整个高校的优势教学资源在各高校之间的流通的良好局面。
1 项目概述
高等教育信息化平台建设的目标是为了建立一个集应用、培训、体验和教学服务为目的的公共服务平台,提供从校务管理、教学管理、科研管理和学习管理等各类服务。我们的用户不仅面向广大学生,教师,各个学校的管理人员,系统本身的维护人员。因此,一个合理而且完善的权限管理已经成为系统不可或缺的一部分。
1.1 平台构建模式
通过对平台的需求研究,高校信息化平台以共享数据为中学和业数据交换相结合的系统建设模式。因为高校信息化平台建设的最根本原则就是各个高校实现优势教学资源的共享,方便省内的各大高校的学生、老师和管理人员。在教学过程中会产生大量的视频、文本、音频资料,平台如何集成这些数据的交换是一个值得研究的问题,考虑到集成现有的平台和平台后期的可扩张性。基于以上的原因我们选择共享数据和数据交换相结合的方式来构建我们的平台。
1.2 资源建设及应用
平台的资源来源于各个高校的日常教学资源,主要依赖各大高校的有价值的教学资源的填充,包括图书电子资源、教学视频,文本,科研资源以及相关的基础数据等。我们将这些电子化的资源数据分门别类的上传到高校信息化平台,供广大的师生学习和观看。
2 访问控制技术
访问控制技术[4]:防止对任何资源进行未授权的访问,从而使计算机系统在合法的范围内使用。简单来说,访问控制技术是为了防止用户访问到未授权限的资源,其目的是为了用户仅能够访问用户已有权限的资源。访问控制权限策略常用的有如下三种,即:强制访问控制(MAC) 、 自主访问控制(DAC) 、 基于角色的访问控制(RBAC)。强制访问控制是系统强制用户按照规定的规则控制用户权限及操作对象的访问,对于专用型系统比较有效。自主访问控制将用户和角色仅仅绑在一起,当用户的调离原来的岗位是,又需要重新分配资源,太过复杂。基于角色的权限管理可以有效地克服上述问题,在设计时将权限与角色直接关联,在权限中关联用户可以访问的资源,再将用户和角色关联。用户需要增加新的权限只需要关联不同的角色,就可以轻松实现解决用户新增权限的问题,同样角色也可以重新关联不同的访问资源。
3 基于角色的权限管理模型和实现
3.1 平台技术架构
高等教育信息化平台选择Java平台实现,整体架构三层架构来实现平台的整体功能。三层架构分为:数据展示层,业务逻辑层和数据库访问层。每一层都控制这系统的不同功能,能够分层开发,提高开发效率。三层架构体现了不同层之间的高内聚低耦合[5]。三层架构图如图1所示。
三层架构的本身是独立于任何编程语言和编程平台而抽象出来的一个企业级应用开发模式,三层架构在不同的平台之中,有着不同的框架的选择来组合完成三层架构。由于Java秉持这开源的特性,因此不同的厂商、企业和开源组织会根据自己的经验的需求开发出不同的框架来提高Java在企业级应用开发的效率。目前从产业界来看选择S2SH(Spring、Hibernate和Struts2)的组合方式来开发Java企业应用是一种非常高效的开发选择。使用S2SH框架来实现三层架构和抽象的三层架构会有一点不同,S2SH框架如图2所示。
3.2 RBAC在平台中的模型
在基于角色的访问控制被提出之后,工程人员在这个模型的基础上来实现自己的权限控制,将理论真正的应用到产业界,来解决实际项目中遇到的问题。在高等教育信息化平台中使用的RBAC权限管理简易模型结构如图3所示:
在基于角色的权限管理模型中,包含了用户(User),角色(Role)和权限(Privilege)。角色是指用户在系统中所具有的职责和职权,在系统中每一个用户都有着自己的职责和能够访问系统中不同资源、功能的能力,需要注意的是应该与现实中的某一个部门的领导者所具有的职责分开理解,在系统中就算你不是一个部门的实际领导者,管理员也可以为你分配相应的角色,即为和你的实际工作中的职位具有无关性。权限表示整个系统中用户可以具有的功能,系统内部对于操作是否允许。例如你具有添加资源的权限,那么你就可以为系统添加资源,同时对于没有添加资源权限的用户,应绝对禁止该用户添加,在该用户的操作界面上都不应该出现添加资源的菜单。用户就是系统的管理者和系统的使用者,是自然世界真实存在的人。会话(Session)是一个系统用户同多个角色的映射,当用户激活了相应的角色时会建立会话。用户的权限就是用户的所有角色的权限的合集。一个功能是否能被某用户使用,是判断用户权限中是否有这个功能的使用许可。
3.3 权限管理功能
整个高校信息平台的权限控制模块分为用户模块管理,角色模块管理,权限资源模块的管理。用户模块管理主要包括用户登录,新增用户,更改用户信息,关联角色。角色模块主要包括新增角色,角色列表,删除角色和更改角色权限资源。权限资源管理模块主要包括资源列表,新增资源,修改资源,删除资源。权限管理模块功能图如图4所示。
高等教育信息化平台是面向各个高校师生,用户的角色按照不同用户的分工不同,主要划分为五个角色:超级管理员,管理员,教师,学生,普通游客。管理员主要是各个高校的负责人,主要负责资源的统筹和信息的沟通,教师是指各个高校的老师,学生是指在在读的各个高校的学生,普通游客是指给在读的高校学生。超级管理员保证系统的正常运行,数据安全和系统的日常维护。系统角色的权限分为两类:一类是操作权限,一类是功能模块权限 。 操作权限如管理表单的权限,文件操作的权限等;功能模块权限,是指按模块划分的操作节点 。两类权限同样都可以进行扩充及维护,更加方便地进行新的控制和功能的增加。划分权限分为三类:第一类,登录功能未登录时可以使用;第二类,不需要控制的功能只要登录就可以使用,不需要进行控制例如:注销、使用主页等;第三类,要控制的功能需要登录用户,并且有相应的权限才可以使用。例如:删除用户、添加用户、管理角色等。系统权限管理模块的类图如图5所示:
权限就是控制功能的使用,功能对应着访问路径URL。因此对功能的控制就是对URL的访问控制。在我们的程序中,一个功能对应一个URL。因此我们需要得到当前用户请求的URL,接下来需要判断当前用户访问的URL是否在他相应的权限表中,如果不在说明当前用户不具有这个访问这个功能的权限。
系统采用S2SH的开源框架实现,MVC控制器使用Struts2框架,页面采用JSP实现。在页面现实中会根据当前登录的用户所具有的权限来显示他的菜单功能。因此每次用户登录需要获取他相应的权限来动态地显示菜单。在Struts2的具体实现中,用户的顶级菜单的现实和相应的下级菜单的现实,我们需要hasPrivilegeByName方法判断用户是否有指定名称的权限。对于用户在JSP页面中使用的链接标签使用Struts2中的标签,为了严格的权限控制需要对标签的功能重写,使其加入权限判断的功能,使用函数AnchorTag继承于AbstractClosingTag可以实现对Struts2中的标签功能的改写,功能改写确保用户使用Struts2中超链接标签也判断了用户权限的是否具有,确保不是产生,用户可以访问非授权的功能,确保系统权限的有效性和完整性。为了防止出现用户登录过后,在浏览器中强制请求URL的bug出现我们需要自定义我们自己的拦截器栈,同时也结局用户未登录系统无法访问的bug,使用类CheckPrivilegeInterceptor实现自己的拦截器,该类中主要实现判断用户的每一次请求都被拦截到,得意判断用户是否具有当前资源的访问权限,确保权限控制的有效性。
3.4 相关类和接口说明
User类表示用户的相关信息,里面包括两个重要的方法hasPrivilegeByName(String)和hasPrivilegeByUrl(String)。分别表示判断用户是否有制定的标签名称和判断用户是访问当期URL的权限。 CheckPrivilegeInterceptor类实现对用户所有的路径请求,判断用户是否具有访问资源的授权。类InitServletContextListener保证用户每一次登录等能够那到他被分配到的权限资源,确保不显示于授权的功能好菜单显示出来。
4 结束语
本文通过对RBAC权限管理模型的基本原理的分析和基于S2SH框架在系统中实现了细粒度的权限管理。利用角色这个概念实现了用户个权限之间的松耦合。
参考文献:
[1] 乔颖, 须德. 一种基于角色访问控制 (RBAC) 的新模型及其实现机制[J]. 计算机研究与发展, 2000, 37(1): 37-44.
[2] 王进. B/S 模式下的三层架构模式[J]. 软件导刊, 2011 (3): 30-31.
[3] LI S, PENG Z. S2SH: a Web Application Framework and Its Implemented Method[J]. Computer Technology and Development, 2009, 8: 033.
[4] Sandhu R S, Samarati P. Access control: principle and practice[J]. Communications Magazine, IEEE, 1994, 32(9): 40-48.
[5] 乔颖, 须德. 一种基于角色访问控制 (RBAC) 的新模型及其实现机制[J]. 计算机研究与发展, 2000, 37(1): 37-44
[6] 王进. B/S 模式下的三层架构模式[J]. 软件导刊, 2011(3): 30-31.
[7] LI S, PENG Z. S2SH: a Web Application Framework and Its Implemented Method[J]. Computer Technology and Development, 2009, 8: 033.
[8] Sandhu R S, Samarati P. Access control: principle and practice[J]. Communications Magazine, IEEE, 1994, 32(9): 40-48.