基于SSME模型和J2EE平台的权限管理系统设计与实现
2016-12-29刘晓天顾大明朱耀琴
刘晓天,顾大明,,宋 巍,朱耀琴
(1.盐城工业职业技术学院机电工程学院,江苏 盐城 224005;2.南京理工大学计算机科学与技术学院,江苏 南京 210094)
基于SSME模型和J2EE平台的权限管理系统设计与实现
刘晓天1,顾大明1,2,宋 巍2,朱耀琴2
(1.盐城工业职业技术学院机电工程学院,江苏 盐城 224005;2.南京理工大学计算机科学与技术学院,江苏 南京 210094)
针对在大型企业应用系统中权限控制由于通过存取控制列表(ACL)机制实现而导致用户操作权限维护复杂的问题,设计了一个权限管理系统.以角色存取控制(RBAC)机制为基础,以服务科学、管理与工程(SSME)理论做指导,采用J2EE领域Struts2-Guice-JPA集成框架实现权限管理系统设计及功能模块.系统测试与应用效果表明:该权限管理系统较好地实现以角色为基础完成权限控制,大幅度降低了维护成本.
权限管理;服务科学、管理与工程;J2EE;Struts2-Guice-JPA;角色存取控制
在一般企业应用系统中,权限控制往往是通过存取控制列表(ACL)机制实现的.由于大型企业中人员经常变动,需要将其可操作的资源或功能逐一取消或变更,用户和操作权限的维护显得紊乱且复杂,而以角色为基础的存取控制(RBAC)机制是以角色来分配权限,并指定使用者为一种或多种角色,当员工变动时,只需修改用户-角色或角色-权限之间的关系.[1-5]本文以J2EE[6-9]平台内Struts2-Guice-JPA[10]集成框架为技术基础,以服务科学、管理与工程(SSME)[11]理论为指导,实现权限管理系统,并取得了较好的应用效果.
1 系统需求分析
1.1 从RBAC角度理解系统功能要求
根据RBAC机制,权限管理系统一般包括用户(User)、角色(Role)、模块(Module)以及功能(Function)等4个权限元素.用户可分为管理员和普通用户,管理员经过登录验证后可以管理用户信息、角色信息、功能信息、模块信息以及角色和功能连接信息、用户和角色连接信息,管理员可以为普通用户分配、回收角色,并可以维护角色可执行的功能,普通用户经过登录验证后可以在授权范围内操作;模块属于企业应用系统组成部分,是由一系列功能构成;功能是指在系统中执行的动作,例如,对业务数据的修改或查询,属于权限元素中最基本单位.这里模块与通常所说的企业应用系统中模块是同一含义,在实际应用中,权限管理系统作为企业应用系统一部分,需结合具体的企业应用系统中模块及模块中功能进行权限管理.
1.2 从SSME角度理解系统生命周期
在权限管理系统开发与运行过程中,运用SSME理论进行指导,从服务整个生命周期的角度开展权限管理系统构建活动,进行系统测试与系统维护.
SSME由服务科学、服务管理、服务工程3个部分组成.服务管理的任务是应用计算机相关理论、模型和方法来提高权限管理服务质量;服务工程的任务是应用软件技术构建权限管理系统,以解决企业应用中权限管理问题.从权限管理服务需求到一个可实际运行的权限管理系统,经过需求调研、系统分析、系统设计、运用技术框架实现4个环节.
2 系统设计
2.1 权限管理过程中SSME模型设计
2.1.1 SSME模型服务管理与服务工程的关系
根据SSME理论及权限管理需求分析,设计了权限管理系统SSME模型服务管理与服务工程关系(如图1所示).
图1 SSME模型服务管理与服务工程的关系
2.1.2 权限管理服务工程开发
(1) 工程的技术基础
权限管理服务工程的技术基础是服务计算.本文采用J2EE领域Struts2-Guice-JPA集成框架技术将“服务”与“计算”2个部分有机结合,将权限管理服务作为解决问题的出发点,构建权限管理系统,在JAVA虚拟机以及应用服务器中执行,以驱动权限管理系统高层业务逻辑的协同运行.
(2) 工程开发方法
权限管理服务工程开发方法包括权限管理系统需求分析、系统设计、运用J2EE技术构建权限管理系统、系统测试与验证等内容.
(a) 权限管理系统分析与设计阶段任务包括权限管理需求分析、权限管理过程中SSME模型设计、系统技术架构、系统数据表设计以及领域模型层设计.
(b) 运用J2EE技术构建权限管理系统主要包括模块管理、功能管理、角色管理、用户管理等系统核心模块实现和关键技术应用.
(c) 权限管理系统测试与验证主要包括权限管理系统测试和系统应用效果两部分内容.系统测试包括单元测试、集成测试以及验收测试,验收测试和系统应用效果检验在系统运行前期及运行期间需要加强,以便对系统分析与设计、系统实现工作进行改进.
2.2 系统总体设计
2.2.1 系统技术架构
权限管理系统技术架构见图2.权限管理系统分为表现层、业务层、持久层,采用Struts2-Guice-JPA集成框架设计.其中,表现层是JSP页面,负责界面显示,Struts2充当控制器,表现层中数据经过Struts2处理后,传递给业务层;业务层对控制器传来的数据经过处理后,交给持久层执行持久化,或者将持久层从数据库中提取的数据经控制器传递给表现层,这里业务层使用Guice框架进行业务组件的组装关联;持久层提供数据访问方法,对数据库进行查询、插入、删除和更新等操作,该层使用JPA框架.领域模型层将权限管理系统所有实体类划分在同一层面,这部分实体对象与权限管理系统所有层都有交互.
图2 权限管理系统技术架构
2.2.2 数据表设计
权限管理系统数据库包括模块信息表module、功能信息表function、角色信息表role、用户信息表User以及角色信息表与功能信息表之间连接表role_function、用户信息表与角色信息表之间连接表user_role.
2.2.3 权限领域模型层设计
针对权限管理系统数据表设计Module、Function、Role、User、RoleFuns、UserRole等实体类,在这部分实体类中,利用JPA标注方法将变量映射到对应数据表,设置数据表之间关联属性.在JPA配置文件中,定义这部分领域模型.
3 系统实现
3.1 系统功能模块实现
3.1.1 模块管理实现
企业应用系统是由一系列模块组成,权限管理系统中模块管理是指对模块(已开发或正在开发的企业应用系统功能模块)的创建、更新、删除、查询等操作.普通用户可以查看自己所能操作的模块,管理员可以对模块增删改查.模块管理实现过程分为持久层、业务层、表现层、业务控制器等4个部分.
(1) 持久层
模块管理的持久层接口类声明新增模块信息、删除模块信息、修改模块信息、通过模块id查询模块信息、查询所有模块信息等,对应的实现类实现了这些方法.
在对模块信息表操作过程中,利用JPA实现持久层,通过注解方法描述模块Module类对象与模块信息表module之间映射关系,并将模块类对象持久化到模块信息表中.JPA使用配置文件定义需要的数据库内容,通过实体管理器对模块信息表中数据进行增删改查,并进行事务管理.
(2) 业务层
模块管理的业务层接口类声明浏览指定角色所能操作的模块、浏览全部模块信息、新增模块信息、根据模块id查询模块信息、修改模块信息、删除模块信息等,在对应的实现类中完成这些方法.
(3) 表现层
模块管理的表现层主要包括显示当前登录用户所处角色的模块页面、查看全部模块信息页面、新增模块信息页面、修改模块信息页面等.
(4) 业务控制器
对于模块的所有操作请求都通过Struts2的核心控制器FilterDispatcher转交给业务控制器ModuleAction类处理,该业务控制器根据传过来的操作参数处理模块管理请求.
3.1.2 功能管理实现
功能管理包括对功能的查询、创建、更新、删除,普通用户可以查看自己所能操作的功能,管理员可以对功能增删改查.功能管理实现过程与模块管理实现过程类似,其中删除功能的方法需要强调一下,在删除功能的同时需要将角色和功能连接表中与该功能相关的信息一并删除.
3.1.3 角色管理实现
角色管理是指管理员对角色的查询、创建、更新、删除等操作,并对角色进行功能分配,也就是维护角色与功能之间的映射.
(1) 持久层
实现角色管理的持久层对角色信息表、角色和功能连接表进行操作.操作角色信息表的持久层接口类声明对角色信息的增删改查方法,对应的实现类实现了这些方法.由于角色和功能之间存在关联关系,因此需对角色和功能连接表进行管理,操作该连接表的接口类声明对角色和功能映射信息的增删改查方法,并在对应实现类中完成这些方法.
(2) 业务层
用于管理角色的业务层接口类声明包括对角色信息业务处理方法、分配功能方法及对应的实现类完成接口类中方法,这里侧重对角色分配可执行功能和删除角色实现过程做出说明.
对角色分配或回收可执行功能的方法:判断是否设置角色可执行功能为空,如果值为“真”,也就是在管理员将该角色可执行功能的复选框全部取消时,将当前角色的所有功能权限删除.如果值为“假”,通过角色id在角色和功能连接表中查找功能id,并对其依次判断,如果在角色分配功能页面上该角色可执行功能未被管理员选定,则在角色和功能连接表中将查出的这条记录删除;否则,将管理员在角色分配功能页面上针对该角色选定的可执行功能,增加到角色和功能连接表中.
删除角色的方法:在角色信息表中删除角色信息时,需将角色和功能连接表中roleId列的值等于该角色id的记录数据删除,同时将用户和角色连接表中roleId列的值等于该角色id的记录数据删除.
3.1.4 用户管理实现
用户管理包括用户创建、更新、删除、改变用户角色以及用户的登录和注册.限于篇幅,这里仅针对业务层进行阐述.
用户管理的业务层接口类声明包括用户信息处理、用户登录验证、查看用户所属角色、对用户分配角色等一系列方法,并由对应实现类完成.对用户分配或回收角色的方法:如果用户可分配角色被管理员取消,则从用户和角色连接表中删除.通过用户id在用户和角色连接表中查找角色id,并对其依次判断,如果查找出来的角色id不在业务控制器UserAction类传递过来的角色id列表中,说明在用户分配角色页面上用户当前角色的权限被管理员取消,则在该连接表中将查出的用户和角色映射记录删除.如果用户可分配角色被管理员选定,则在用户和角色连接表中增加用户当前角色.对业务控制器UserAction类传递过来的角色id依次判断,如果该id和用户id组成的数据在用户和角色连接表中不存在,就将该角色id和用户id组成的数据存储到该连接表中.
3.1.5 关键技术应用
(1) JPA技术应用
在权限管理系统DAO实现类中,JPA的实体管理器EntityManager是应用程序访问User、Role、Function、Module、UserRole、RoleFuns等实体的接口,用来查询、创建、删除、修改这部分实体Bean.JPA操作的是实体对象,不关注系统数据库类型,这样简化了系统开发的难度,增加了系统的可移植性.
(2) Guice框架应用
在权限管理系统中,Guice作为控制层和持久层的中间纽带,并负责将接口类和实现类绑定.由于Guice内部已经提供一个与Struts2框架配置的文件,Guice框架和Struts2框架集成,不再另外编写配置文件,这一点是其他IoC(控制反转)容器不具备的.
权限管理系统业务组件接口类与其实现类之间关系,通过Bound类绑定,不需要编写配置文件,其他框架(譬如Spring)在装载配置文件时,需要解析XML文件,运行效率降低,而Guice则没有这方面缺陷.权限管理系统绑定类部分代码为:
binder.bind(RoleDao.class).toProvider(RoleDaoImpl.class);
binder.bind(RoleService.class).toProvider(RoleServiceImpl.class).
利用这部分代码,将权限管理系统角色管理接口类与其实现类进行绑定.如果需增加或减少其绑定,只需在绑定类中修改相应代码,而其他类不需改变,增加了系统的可维护性.
3.2 系统测试
根据SSME理论,权限管理服务工程开发过程包括一系列测试.在权限管理系统服务管理阶段,服务创新管理内容包括权限管理方式的改进、Struts2-Guice-JPA集成框架的应用及测试服务.权限管理系统测试过程包括单元测试、集成测试以及验收测试,测试人员构成包括设计人员、开发人员、用户以及第三方专业机构测试人员.
测试结果显示,管理员可以对模块及其功能进行查询、创建、修改、删除等操作,可以对角色进行查询与维护,并可对角色进行功能分配,可以对用户进行创建、更新、删除等操作,改变用户角色;普通用户可以查看自己所能操作的模块以及所能操作的功能,可以在分配的权限内操作,但不能越权操作.
4 结论
经过结合具体的企业应用系统运行验证,该权限管理系统功能实用,管理员可以进行模块管理、功能管理,可以方便地定义角色,设置角色的权限,为普通用户分配角色,普通用户可以根据分配的权限进行操作,系统运行性能良好,较好地实现以角色为基础完成权限分离.当人员变动时,只需调整使用者的角色,避免了管理混乱,有效降低了管理成本.而且,该权限管理系统采用的J2EE机制内Struts2-Guice-JPA集成框架,提高了系统的可扩展性和可维护性.根据权限管理过程中SSME模型设计,该系统功能在运行期需要进一步完善,可引入角色继承机制,加强权限校验,将作为以后研究的方向.
[1] 熊厚仁,陈性元,张斌,等.基于RBAC的授权管理安全准则分析与研究[J].计算机科学,2015,42(3):117-123.
[2] 卢淹平,苏守宝,郁书好.一种层次信任的RBAC扩展模型[J].东北师大学报(自然科学版),2014,46(1):60-65.
[3] 王桂超,王彦,李永珍.基于RBAC的RFID安全认证协议[J].计算机工程与科学,2014,36(5):874-878.
[4] 刘庆云,沙泓州,李世明,等.一种基于量化用户和服务的大规模网络访问控制方法[J].计算机学报,2014,37(5):1195-1205.
[5] 苏铓,李凤华,史国振.基于行为的多级访问控制模型[J].计算机研究与发展,2014,51(7):1604-1613.
[6] 杜长霄,李晓红,石红,等.J2EE应用软件的架构安全评估方法[J].计算机科学与探索,2014,8(5):572-581.
[7] 曾祥飞,郭帆,涂风涛.基于对象跟踪的J2EE程序动态污点分析方法[J].计算机应用,2015,35(8):2386-2391.
[8] 吕雪,凌捷.基于J2EE架构的信息安全应急预案管理系统研究与实现[J].计算机工程与设计,2013,34(4):1197-1201.
[9] 王延翔,杨金民.基于分层分类的J2EE应用系统异常处理方法[J].计算机应用研究,2015,32(3):776-780.
[10] 甘文丽,刘为超.基于Struts2和Ajax的企业级Web应用开发[J].工矿自动化,2013,39(2):23-26.
[11] 刘尚亮,沈惠璋,李峰,等.服务科学研究综述[J].科学学与科学技术管理,2010,31(6):85-89.
(责任编辑:石绍庆)
Design and implementation of authority management system based on SSME model and J2EE platform
LIU Xiao-tian1,GU Da-ming1,2,SONG Wei2,ZHU Yao-qin2
(1.Department of Mechanical and Electrical Engineering,Yancheng Institute of Industry Technology,Yancheng 224005,China;2.College of Computer Science and Technology,Nanjing University of Science and Technology,Nanjing 210094,China)
In large enterprise application systems,access control is often achieved by access control list (ACL) mechanism,causing user operation authority maintenance complex.Aiming at this problem,an authority management system is designed.Under the guide of SSME (Service Science,Management and Engineering) theory,design and functional modules of the authority management system is realized adopting Struts2-Guice-JPA integration framework of J2EE field,on the basis of role-based access control (RBAC) mechanisms.System testing and application results show that access control is completed preferably based on the role by this authority management system,and the cost of maintenance is reduced greatly.
authority management;SSME;J2EE;Struts2-Guice-JPA;RBAC
1000-1832(2016)04-0068-05
10.16163/j.cnki.22-1123/n.2016.04.015
2016-02-28
国家自然科学基金资助项目(61202003).
刘晓天(1981—),女,硕士,讲师,主要从事计算机应用、模糊识别等研究;通信作者:顾大明(1979—),男,硕士,副教授,主要从事计算机应用、云计算研究.
TP 315 [学科代码] 520·4070
A