CN109688120B - 基于改进RBAC模型及Spring Security框架的动态权限管理系统 - Google Patents

基于改进RBAC模型及Spring Security框架的动态权限管理系统 Download PDF

Info

Publication number
CN109688120B
CN109688120B CN201811535280.0A CN201811535280A CN109688120B CN 109688120 B CN109688120 B CN 109688120B CN 201811535280 A CN201811535280 A CN 201811535280A CN 109688120 B CN109688120 B CN 109688120B
Authority
CN
China
Prior art keywords
user
role
authority
module
many
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201811535280.0A
Other languages
English (en)
Other versions
CN109688120A (zh
Inventor
徐新民
韩刚强
吴东宇
尚丽娜
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang University ZJU
Original Assignee
Zhejiang University ZJU
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhejiang University ZJU filed Critical Zhejiang University ZJU
Priority to CN201811535280.0A priority Critical patent/CN109688120B/zh
Publication of CN109688120A publication Critical patent/CN109688120A/zh
Application granted granted Critical
Publication of CN109688120B publication Critical patent/CN109688120B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/20Network architectures or network communication protocols for network security for managing network security; network security policies in general
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/30Network architectures or network communication protocols for network security for supporting lawful interception, monitoring or retaining of communications or communication related information
    • H04L63/306Network architectures or network communication protocols for network security for supporting lawful interception, monitoring or retaining of communications or communication related information intercepting packet switched data communications, e.g. Web, Internet or IMS communications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • H04L67/025Protocols based on web technology, e.g. hypertext transfer protocol [HTTP] for remote control or remote monitoring of applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/14Network analysis or design
    • H04L41/145Network analysis or design involving simulating, designing, planning or modelling of a network

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Technology Law (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了一种基于改进RBAC模型及Spring Security框架的动态权限管理系统,其首先将用户组模块上的“继承”概念转移到角色模块上,一定程度上将用户组模块和角色模块合并在一块;然后修改了RBAC模型中对网站资源定义,通过对网页服务器控制器中方法的控制,以满足绝大多数应用场景;最后增加了用户额外权限关联表和用户屏蔽权限关联表,增加权限配置的灵活性,配合Spring Security框架,本发明通过标注控制方法,可以快速标记网站的资源,通过数据库管理,实现了基于改进后的RBAC模型的动态权限管理方案,能够方便的集成到主流Java后台服务器中,灵活性高,并且大大降低了网站管理员的工作量。

Description

基于改进RBAC模型及Spring Security框架的动态权限管理 系统
技术领域
本发明属于计算机软件后台服务器及管理系统技术领域,具体涉及一种基于改进RBAC(Role-Based Access Control,基于角色的权限访问控制)模型及Spring Security框架的动态权限管理系统。
背景技术
近年来,随着计算机技术的不断进步和互联网技术的不断发展,互联网应用、互联网管理平台渗入到生活生产的各个领域,互联网应用和互联网管理平台的规模越来越大。随着互联网应用和管理平台的应用越来越广,规模越来越大,用户量也不断增大,系统资源规模也越来越大,而在实际应用中,特定的资源必然只能有特定的用户访问。
某用户拥有访问某个资源称为该用户拥有某种权限,一个系统中所有用户的权限肯定不一样,存在管理员、一般用户和其他不同类型的用户,而所有用户的权限都不是完全相同的,所以系统管理员需要为所有的用户分配权限。随着用户量增大,资源规模增大,为用户分配权限的工作量指数增加,直到系统管理员无法胜任,因此现有的互联网应用系统都会使用一个专门的权限管理模块来管理用户的权限:有的权限管理模块没有角色的概念,操作复杂;有的权限管理模块权限固化,不能修改;有的权限管理模块借助RBAC模型实现了权限的动态管理,但也存在一些问题,如:
严彬元在文献《基于RBAC权限模型搭建的高效智能权限管理系统》中粗略地描述了一种RBAC模型的实现方案,但并没有给出明确完整的实现方案,尤其是在系统资源的标注方式和权限表如何定义这两个方面。
公开号为CN107194269A的中国专利提供了一种基于RBAC的密码机及访问控制方法,但该专利技术存在两个问题:第一个问题是角色没有层次继承关系,这将大大增加系统管理员的维护工作量;第二个问题是该系统中被保护的资源相对单一;而网站服务器不同,网站服务器的资源种类繁多、数量庞大所以对网站服务器的资源进行整理并标注还是一个待解决的问题,该解决方案的适用面很窄、通用性不强。
公开号为CN107707572A的中国专利提供了一种基于角色的WEB安全访问控制方法,实现了完全的网站权限控制,也是对RBAC模型的一种实现;为了保证对网站资源的完全控制,该控制方法需要把系统资源表实例化为多个具体的表,但是将系统资源表实例化为多个具体的表是需要根据特定的系统来进行实施的,这就导致该权限管理方法与实际系统的耦合度很高,可能不同系统的系统资源表设计与实现会有很大的差别,方法的移植性和通用性也不强。
发明内容
鉴于上述,本发明提供了一种基于改进RBAC模型及Spring Security框架的动态权限管理系统,通过改进RBAC模型,实现了一个动态权限管理方案,能够方便的集成到主流Java后台服务器中,灵活性高,并且大大降低了网站管理员的工作量。
一种基于改进RBAC模型及Spring Security框架的动态权限管理系统,该系统根据实际应用通过对RBAC模型进行改进,抽象出角色概念,针对不同的角色赋予不同的权限;当需要为一个新用户分配权限时,赋予该新用户某些角色,使得该新用户具有相应的权限;所述动态权限管理系统包括:
Spring模块,其作为整个软件的容器,用于整合所用到的各个框架,实现依赖反转,管理整个软件的框架;
Spring Security模块,用于标记网站资源,拦截用户请求,计算用户权限,决策用户是否能进行相关操作;
数据库管理模块,用于存储用户数据、角色数据、权限数据、用户角色多对多数据、角色权限多对多数据、特殊用户权限数据,支持存储数据的增删查改;
MyBatis模块,用于管理数据库,封装底层数据库访问接口,为上层服务提供DAO(Data Access Object,数据访问对象);
Spring MVC模块,用于接受用户请求、请求分发、业务逻辑调用、视图解析以及请求响应,其为一个网页开发框架并以MVC(Model View Controller)的思想架构网页,使得各层分工明确,各个模块解耦且内聚;
Web网页模块,用于为各个业务提供网页视图文件,接受Spring MVC模块的调用后将Web网页呈现在用户面前。
进一步地,系统根据实际应用对RBAC模型进行改进,主要包括以下三部分:①将RBAC模型中的用户组模块和角色模块进行合并;②将RBAC模型的冗余权限分类进行剪除;③添加用户额外权限关联表和用户屏蔽权限关联表。
RBAC模型不但引入了角色的概念,还有用户组的概念;用户组有着自己的角色,且用户组与角色之间也是多对多的关系;一个用户可以属于一个或多个用户组,即用户与用户组之间也是多对多的关系;因此用户、用户组、角色三者两两之间也是多对多的关系;一个用户的权限由三个方面构成:用户自身拥有的角色对应的权限、用户所属的用户组的角色对应的权限、用户组如果包含子用户组那么还包含子孙用户组拥有的角色对应的权限。
进一步地,所述将RBAC模型中的用户组模块和角色模块进行合并,具体地:使用户到用户组的多对多关系以及用户组到角色的多对多关系通过用户到角色的多对多关系来等价,将用户组概念去除,保留角色的概念;同时让角色拥有继承特性,即父角色拥有子孙角色的权限,一个用户拥有了父角色,则该用户不但被赋予了父角色的权限,同时也被赋予了该父角色的子孙角色的权限。
进一步地,所述将RBAC模型的冗余权限分类进行剪除,即考虑到现行主流的Spring、Spring MVC、MyBatis三大框架的Web系统中,所有的用户请求都会通过控制器进行请求分发,因此只需要在控制器层面对网站资源进行管理即可,结合Spring Security框架的资源标注功能,实现动态权限管理。
进一步地,所述添加用户额外权限关联表和用户屏蔽权限关联表,用户额外权限关联表和用户屏蔽权限关联表分别记录每个用户特有的权限和排除的权限(不能被赋予的权限);确定用户最终的权限时,首先获取用户所拥有的角色集合,然后将子角色也加入到角色集合中,直到所有的子孙角色都加入到角色集合中;求出角色集合中的角色拥有的权限,并放入权限集合中;将用户额外权限表中用户对应的权限加入到权限集合中,将用户屏蔽权限表中用户对应的权限从权限集合中去除,最终得到的权限集合就是用户最终的权限。
进一步地,所述Web网页模块通过构造生成角色层次树用以动态生成HTML页面文件并显示,其首先需要设计树的节点类,主要包含两个属性:对应的角色信息、拥有的子节点集合;然后使用哈希队列通过广度优先搜索算法来构造角色层次树,具体地:
(1)将根角色对象加入哈希队列,并使用根角色对象构建角色层次树的根节点;
(2)循环执行以下操作,直到队列为空;
2.1从队列头部中取出一个元素即一个角色对象;
2.2从数据库中查找以该角色为父角色的角色集合,并加入到队尾;
2.3在队列中查找所取出的角色对象的父对象所在位置,并将该角色加入到其父角色所在节点的子节点集合元素中;
(3)返回角色层次树的根节点;
最后根据返回的根节点使用深度搜索算法配合JQuery,动态生成HTML代码,具体实现过程中使用了JQuery的append()方法,根据深度搜索得到的结果,迭代地向ul中添加li节点,进而向li节点中添加子ul列表,同时使用JS和CSS来实现菜单的折叠。
当用户使用用户名和密码进行登录时,用户名被依次传入AuthenticationManager、AuthenticationProvider、UserDetailService、loadByUserName,本发明自定义了UserDetailService中的loadByUserName方法,根据传入的用户名,调用DAO查找数据库,依次从数据库查询出用户名对应的用户、对应的角色集合、对应的权限集合、对应的权限名集合,最后得到用户名对应的权限名集合,该集合也就是用户所有有权限访问的控制器方法上的标注字符串集合;将查询出的用户名、密码和权限名集合返回给Spring Security的AuthenticationManager,AuthenticationManager中有个authenticate方法中会验证用户名和密码,并将验证结果和用户拥有的权限集合封装到Authentication类中,然后在AccessDecisionManager中根据用户的Authentication信息判断某个是否有权限访问某控制器方法,而控制器方法是网页功能的入口,也就限制的用户是否有权限访问某个网页或进行某种网页操作,实现了权限控制。
用户所拥有的权限均是存储在数据库这边的,修改用户角色关联表、角色权限关联表、用户额外权限表、用户屏蔽权限表可以在线热修改用户所拥有的权限,从而实现了用户权限的动态管理。
本发明改进了RBAC模型,首先考虑到用户组模块和角色模块有很大的重复度,剪除了RBAC模型中的用户组模块,并将用户组模块上的“继承”概念转移到角色模块上,一定程度上就是将用户组模块和角色模块合并在一块;再者原RBAC模型在网站资源的控制上十分复杂,分为URL资源、网页资源、方法资源、菜单资源、控件资源和文件资源等等,总结来说就是其权限控制的粒度十分细,实际应用中很少有场景要求如此细粒度的控制,所以修改了RBAC模型中对网站资源定义,通过对网页服务器控制器中方法的控制,就可以满足绝大多数应用场景,降低了模型复杂度,是模型实现起来更加简洁高效;第三个改进是增加了用户额外权限关联表和用户屏蔽权限关联表,增加权限配置的灵活性,配合Spring Security框架,通过标注控制方法,可以快速标记网站的资源,然后通过数据库管理,实现了基于改进后的RBAC模型的动态权限管理方案。
综上所述,本发明基于Spring Security框架,并有以下模块进行配合:Mybatis模块管理数据库模块存储和管理用户权限信息、Spring MVC模块和Web网页模块提供动态权限管理系统效果演示,实现了改进后的RBAC模型,实现了一个动态权限管理方案,能够方便的集成到主流Java后台服务器中,灵活性高,并且大大降低了网站管理员的工作量。
附图说明
图1为原RBAC模型框图。
图2为改进后的RBAC模型框图。
图3为本发明动态权限管理系统的结构框图。
图4(a)为FilterSecurityInterceptor的关系示意图。
图4(b)为AccessDecisionManager的关系示意图。
图4(c)为AuthenticationManager的关系示意图。
具体实施方式
为了更为具体地描述本发明,下面结合附图及具体实施方式对本发明的技术方案进行详细说明。
如图1所示,RBAC模型抽象出角色概念,将不同的角色赋予不同的权限,当需要为一个新用户分配权限时,我们可以赋予用户某些角色,这个新用户就具有了相应的权限。
本发明根据实际应用将RBAC模型进行了改进,主要分为三个步骤:
(1)将RBAC模型的用户组模块和角色模块进行合并。
RBAC模型不但引入了角色的概念,还有用户组的概念;用户组有着自己的角色,且用户组与角色之间也是多对多的关系;一个用户可以属于一个或多个用户组,即用户与用户组之间也是多对多的关系;所以用户、用户组、角色三者两两之间都是多对多的关系。一个用户的权限由三个方面构成:用户自身拥有的角色对应的权限、用户所属的用户组的角色对应的权限、用户组如果包含子用户组那么还需要包含子孙用户组拥有的角色对应的权限。
实际应用中,用户组是将相似的用户组织到一块,然后用户组能够抽象出该组共有的角色权限。比如将各种管理员分在一个管理员组里面,而管理员组拥有管理员角色和普通用户角色;对于一个管理员用户,他自身就拥有管理员角色和普通用户角色,然后他属于管理员用户组,管理员用户组拥有的角色和管理员用户自身拥有的角色相似或者完全相同;也就是说用户属于某个用户组,然后通过用户组拥有某个权限完全可以通过自身拥有某个角色来实现,没必要通过用户组传递一次。
综上所述,用户到用户组的多对多关系和用户组到角色的多对多关系完全可以用用户到角色的一个多对多关系来等价,用户组与角色两个概念具有很大的相似度和重复性;如果将用户组概念去除,保留角色的概念,那将大大简化了模型的复杂度,并且完全能够胜任各种实际应用场景,但考虑到用户组拥有“继承”的概念,也就是说父用户组拥有子孙用户组拥有的角色,这个特性在实际应用中很有价值,所以将其移植到角色层面,让角色拥有“继承”特性,也就是说父角色拥有子孙角色的权限,一个用户拥有了父角色,则该用户不但被赋予了父用户角色的权限,同时也被赋予了该父角色的子孙角色的权限。
(2)将RBAC模型的冗余权限分类进行剪除。
考虑到现行主流的SMM(Spring、Spring MVC、MyBatis三大框架)架构的Web系统中,所有的用户请求都会通过控制器,进行请求分发,所以只需要在控制器层面对网站资源进行管理即可,结合Spring Security框架的资源标注功能,实现动态权限管理。
(3)添加用户额外权限关联表和用户屏蔽权限关联表。
在实际应用中,经常会遇到需要给某个用户赋予的权限和系统中已有的角色拥有的权限有一定的区别,比如新注册的用户A是一个普通的游客,系统中现有的普通用户角色拥有权限1、权限2和权限3,但用户A虽然是一个普通用户,但由于某种特殊性,其应该被赋予的权限是权限1、权限3和权限4。一种解决方法即创建一个拥有权限1、3、4新的角色赋予新用户,但这不是一个好办法,试想如果再有一个新用户应该被赋予权限1、3、5,那是不是还需要新增一个角色,所以这样做就违背了角色模块的初衷;角色模块是需要将一些用户的公共权限抽象出来,而不是为每个用户都定义一个角色。但实际应用中每个用户必然存在各自的特殊性,为了解决这个问题,新增用户额外权限表和用户屏蔽权限表,分别表示某个用户特有的权限和排除的权限(不能被赋予的权限)。
用户最终的权限应该这样获取:首先获取用户所拥有的角色集合;然后求出角色集合的子角色也加入到角色集合中,直到所有的子孙角色都加入到集合中;求出角色集合中的角色拥有的权限,放入权限集合中;将用户额外权限表中对应的权限加入到权限集合中,将用户屏蔽权限表中对应的权限从权限集合中去除(如果存在),最终得到的权限集合就是用户拥有的权限。
修改后的RBAC模型如图2所示,本发明结合Spring Security框架,通过改进后的RBAC模型实现了一种动态权限管理系统,如图3所示,其包括Spring模块、Spring Security模块、数据库管理模块、MyBatis模块、Spring MVC模块、Web网页模块,其中:Spring模块作为整个软件的容器,用于整合所用的各个框架,实现依赖反转,管理整个软件的框架;Spring Security模块用于标记网站资源、拦截用户请求、计算用户权限、决策用户是否能进行某些操作,该模块是动态权限管理系统中的核心模块;数据库管理模块用于存储用户数据、角色数据、权限数据、用户角色多对多数据、角色权限多对多数据,支持存储数据的增删查改;MyBatis模块用于管理数据库,封装底层数据库访问接口,为上层服务提供DAO;Spring MVC模块是一个网页开发框架,以MVC的思想架构网页,是各层分工明确,各个模块解耦且内聚,主要功能是接受用户请求、请求分发、业务逻辑调用、视图解析、请求响应等;Web网页模块为各个业务提供网页视图文件,接受Spring MVC的调用后呈现在用户面前。
数据库模块配置:数据库主要需要创建七张表,分别为用户信息表、用户角色关联表、角色信息表、角色权限关联表、权限信息表、用户额外权限关联表、用户屏蔽权限关联表,信息表表示用户或者角色或者权限的基本信息,关联表用外键来记录信息表的多对多关系。角色信息表中有个SuperRoleName属性,用于表示其父角色的名称,通过递归地查找父角色来查询某个用户的全部角色;权限信息表中有个PermissionName属性,用于记录该权限在Spring Security中标记的字符串,比较用户的权限中的PermissionName字符串与网页控制器方法中的标注字符串来确定用户是否有某个访问某个方法的权限。
MyBatis模块配置包括:(1)配置数据库的连接参数,包括数据库驱动名、数据库地址、数据库访问用户名、数据库访问密码等等;(2)用Spring给SqlSessionFactoryBean类注入数据库连接参数、MyBatis默认配置信息(超时时长、延迟加载策略等)和实体类映射文件信息;(3)将SqlSessionFactoryBean注入到SqlSessionTemplate类中,在DAO层就可以使用SqlSessionTemplate快捷地进行数据库操作了。
Spring MVC模块配置包括设置需要自动扫描的包、静态资源定义、JSON转换器定义、网页文件的前缀和后缀定义等等。
Spring Security模块配置包括:(1)定义需要排除权限验证的URL,比如静态资源、登录页面、注册页面等,这些页面不需要权限验证,任何用户都可以访问;(2)开启Spring Security的注解功能,以支持在方法上通过注解的方式定义权限;(3)自定义AuthenticationManager,使用Spring将自定义的UserDetailService作为AuthenticationProvider注入到AuthenticationManager中作为自定义的AuthenticationManager;(4)定义Spring Security的登录页面和首页,以及登录的用户名和密码的参数名,并设置自定义AuthenticationManager作为系统使用的权限认证器;(5)开启Spring Security的缓存支持,减少鉴权的时间开销。
Web网页模块配置主要包括简单的登录页面、注册页面以及权限管理界面,权限管理界面主要涉及一种深度层次的角色树生成算法和角色树的层级菜单动态显示算法:首先需要设计树的节点类,主要包含两个属性:对应的角色信息、拥有的子节点集合;然后使用哈希队列(LinkedHashMap)用广度优先搜索算法来构造角色层次树:
(1)将根角色对象入队,并使用根角色对象构建角色层次树的根节点;
(2)开始循环,直到队列为空:
2.1从队头中取出一个元素(即一个角色对象);
2.2数据库中查找以该角色为父角色的角色集合,加入到队尾;
2.3在哈希队列中查找取出的角色对象的父对象所在位置,将该角色加入到其父角色所在节点的子节点集合元素中;
(3)返回上述中的根节点即为角色层次树的根节点;
最后,根据上一步中返回的根节点使用深度搜索算法配合JQuery,动态生成HTML代码,具体实现过程中使用JQuery的append()方法,根据深度搜索得到的结果,迭代地向ul中添加li节点,向li节点中添加子ul列表,同时使用JS和CSS来实现菜单的折叠。
如图4(a)~图4(c)所示,当用户使用用户名和密码进行登录时,用户名被依次传入AuthenticationManager、AuthenticationProvider、UserDetailService、loadByUserName,本发明自定义了UserDetailService中的loadByUserName方法,根据传入的用户名,调用DAO查找数据库,依次从数据库查询出用户名对应的用户、对应的角色集合、对应的权限集合、对应的权限名集合,最后得到用户名对应的权限名集合,该集合也就是用户所有有权限访问的控制器方法上的标注字符串集合;将查询出的用户名、密码和权限名集合返回给Spring Security的AuthenticationManager,AuthenticationManager中有个authenticate方法中会验证用户名和密码,并将验证结果和用户拥有的权限集合封装到Authentication类中,然后在AccessDecisionManager中根据用户的Authentication信息判断某个是否有权限访问某控制器方法,而控制器方法是网页功能的入口,也就限制的用户是否有权限访问某个网页或进行某种网页操作,实现了权限控制。
用户所拥有的权限均是存储在数据库这边的,修改用户角色关联表、角色权限关联表、用户额外权限表、用户屏蔽权限表可以在线热修改用户所拥有的权限,从而实现了用户权限的动态管理。
上述对实施例的描述是为便于本技术领域的普通技术人员能理解和应用本发明。熟悉本领域技术的人员显然可以容易地对上述实施例做出各种修改,并把在此说明的一般原理应用到其他实施例中而不必经过创造性的劳动。因此,本发明不限于上述实施例,本领域技术人员根据本发明的揭示,对于本发明做出的改进和修改都应该在本发明的保护范围之内。

Claims (1)

1.一种基于改进RBAC模型及Spring Security框架的动态权限管理系统,其特征在于:该系统根据实际应用通过对RBAC模型进行改进,抽象出角色概念,针对不同的角色赋予不同的权限;当需要为一个新用户分配权限时,赋予该新用户某些角色,使得该新用户具有相应的权限;
系统根据实际应用对RBAC模型进行改进,主要包括以下三部分:①将RBAC模型中的用户组模块和角色模块进行合并;②将RBAC模型的冗余权限分类进行剪除;③添加用户额外权限关联表和用户屏蔽权限关联表;其中:
将RBAC模型中的用户组模块和角色模块进行合并,具体地:使用户到用户组的多对多关系以及用户组到角色的多对多关系通过用户到角色的多对多关系来等价,将用户组概念去除,保留角色的概念;同时让角色拥有继承特性,即父角色拥有子孙角色的权限,一个用户拥有了父角色,则该用户不但被赋予了父角色的权限,同时也被赋予了该父角色的子孙角色的权限;
将RBAC模型的冗余权限分类进行剪除,即考虑到现行主流的Spring、Spring MVC、MyBatis三大框架的Web系统中,所有的用户请求都会通过控制器进行请求分发,因此只需要在控制器层面对网站资源进行管理即可,结合Spring Security框架的资源标注功能,实现动态权限管理;
添加用户额外权限关联表和用户屏蔽权限关联表,用户额外权限关联表和用户屏蔽权限关联表分别记录每个用户特有的权限和排除的权限;确定用户最终的权限时,首先获取用户所拥有的角色集合,然后将子角色也加入到角色集合中,直到所有的子孙角色都加入到角色集合中;求出角色集合中的角色拥有的权限,并放入权限集合中;将用户额外权限表中用户对应的权限加入到权限集合中,将用户屏蔽权限表中用户对应的权限从权限集合中去除,最终得到的权限集合就是用户最终的权限;
所述动态权限管理系统包括:
Spring模块,其作为整个软件的容器,用于整合所用到的各个框架,实现依赖反转,管理整个软件的框架;
Spring Security模块,用于标记网站资源,拦截用户请求,计算用户权限,决策用户是否能进行相关操作;
数据库管理模块,用于存储用户数据、角色数据、权限数据、用户角色多对多数据、角色权限多对多数据、特殊用户权限数据,支持存储数据的增删查改;
MyBatis模块,用于管理数据库,封装底层数据库访问接口,为上层服务提供DAO;
Spring MVC模块,用于接受用户请求、请求分发、业务逻辑调用、视图解析以及请求响应,其为一个网页开发框架并以MVC的思想架构网页,使得各层分工明确,各个模块解耦且内聚;
Web网页模块,用于为各个业务提供网页视图文件,接受Spring MVC模块的调用后将Web网页呈现在用户面前;
所述Web网页模块通过构造生成角色层次树用以动态生成HTML页面文件并显示,其首先需要设计树的节点类,主要包含两个属性:对应的角色信息、拥有的子节点集合;然后使用哈希队列通过广度优先搜索算法来构造角色层次树,具体地:
(1)将根角色对象加入哈希队列,并使用根角色对象构建角色层次树的根节点;
(2)循环执行以下操作,直到队列为空;
2.1从队列头部中取出一个元素即一个角色对象;
2.2从数据库中查找以该角色为父角色的角色集合,并加入到队尾;
2.3在队列中查找所取出的角色对象的父对象所在位置,并将该角色加入到其父角色所在节点的子节点集合元素中;
(3)返回角色层次树的根节点;
最后根据返回的根节点使用深度搜索算法配合JQuery,动态生成HTML代码,具体实现过程中使用了JQuery的append()方法,根据深度搜索得到的结果,迭代地向ul中添加li节点,进而向li节点中添加子ul列表,同时使用JS和CSS来实现菜单的折叠。
CN201811535280.0A 2018-12-14 2018-12-14 基于改进RBAC模型及Spring Security框架的动态权限管理系统 Active CN109688120B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811535280.0A CN109688120B (zh) 2018-12-14 2018-12-14 基于改进RBAC模型及Spring Security框架的动态权限管理系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811535280.0A CN109688120B (zh) 2018-12-14 2018-12-14 基于改进RBAC模型及Spring Security框架的动态权限管理系统

Publications (2)

Publication Number Publication Date
CN109688120A CN109688120A (zh) 2019-04-26
CN109688120B true CN109688120B (zh) 2020-11-03

Family

ID=66187681

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811535280.0A Active CN109688120B (zh) 2018-12-14 2018-12-14 基于改进RBAC模型及Spring Security框架的动态权限管理系统

Country Status (1)

Country Link
CN (1) CN109688120B (zh)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110443010B (zh) * 2019-07-22 2022-05-03 安徽智恒信科技股份有限公司 一种在信息系统中权限可视化配置控制方法、装置、终端及存储介质
CN110659465A (zh) * 2019-09-25 2020-01-07 四川长虹电器股份有限公司 一种基于rbac的个性化权限管理方法
CN110839014B (zh) * 2019-10-12 2022-03-01 平安科技(深圳)有限公司 一种认证方法、装置、计算机设备及可读存储介质
CN111931133B (zh) * 2019-12-26 2021-06-25 长扬科技(北京)有限公司 一种基于b/s架构的权限控制方法
CN111143824B (zh) * 2019-12-31 2022-06-10 奇安信科技集团股份有限公司 冗余权限的确定方法、装置、计算机设备和可读存储介质
CN111556005B (zh) * 2019-12-31 2023-08-08 远景智能国际私人投资有限公司 权限管理方法、装置、电子设备及存储介质
CN113127890B (zh) * 2019-12-31 2023-08-29 北京懿医云科技有限公司 一种访问权限管理方法及装置
CN111241526B (zh) * 2019-12-31 2022-11-22 深圳云天励飞技术有限公司 数据权限匹配方法、装置、电子设备及存储介质
CN113312659A (zh) * 2020-02-27 2021-08-27 商志营 一种基于关系的网状式权限管理系统及方法
CN111783050A (zh) * 2020-07-02 2020-10-16 浪潮云信息技术股份公司 一种网站用户的角色及权限控制系统
CN111930752B (zh) * 2020-09-01 2024-05-07 上海泛微软件有限公司 一种数据处理方法及相关设备
CN112269971A (zh) * 2020-11-10 2021-01-26 电子科技大学 一种用于大型软件的权限组织结构及权限管理方法
CN112528248A (zh) * 2020-12-08 2021-03-19 北京航天云路有限公司 面向多应用的用户权限管理方案
CN112883390B (zh) * 2021-02-18 2022-04-22 腾讯科技(深圳)有限公司 一种权限控制方法、装置及存储介质
CN112948861A (zh) * 2021-03-09 2021-06-11 浪潮云信息技术股份公司 基于微服务的元数据权限管理方法及装置
CN113656724B (zh) * 2021-10-20 2022-02-15 深圳市信润富联数字科技有限公司 一种基于web页面动态配置网页功能的方法及系统
US20230275931A1 (en) * 2022-02-25 2023-08-31 Red Hat, Inc. Dynamic management of role-based access control systems
CN114722408A (zh) * 2022-04-13 2022-07-08 上海基玉金融信息服务股份有限公司 基于rbac模型的权限管理系统及方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101902402A (zh) * 2010-07-21 2010-12-01 中兴通讯股份有限公司 一种用户权限管理方法、装置
CN103701801A (zh) * 2013-12-26 2014-04-02 四川九洲电器集团有限责任公司 一种资源访问控制方法
CN105824619A (zh) * 2016-03-10 2016-08-03 四川交通职业技术学院 基于Spring MVC、Apache Shiro、MyBatis框架整合的代码生成器
CN106657046A (zh) * 2016-12-13 2017-05-10 飞狐信息技术(天津)有限公司 可配置的细粒度权限控制方法及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9405896B2 (en) * 2011-04-12 2016-08-02 Salesforce.Com, Inc. Inter-application management of user credential data
CN106570656A (zh) * 2016-11-11 2017-04-19 南京南瑞继保电气有限公司 一种基于rbac模型的分级授权方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101902402A (zh) * 2010-07-21 2010-12-01 中兴通讯股份有限公司 一种用户权限管理方法、装置
CN103701801A (zh) * 2013-12-26 2014-04-02 四川九洲电器集团有限责任公司 一种资源访问控制方法
CN105824619A (zh) * 2016-03-10 2016-08-03 四川交通职业技术学院 基于Spring MVC、Apache Shiro、MyBatis框架整合的代码生成器
CN106657046A (zh) * 2016-12-13 2017-05-10 飞狐信息技术(天津)有限公司 可配置的细粒度权限控制方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
云服务用户鉴权模型的研究与实现;郭云鹏;《中国优秀硕士学位论文全文数据库 信息科技辑》;20180315;第20-52页 *
基于SSH的B/S应用程序权限控制研究与应用;张丹丹;《中国优秀硕士学位论文全文数据库 信息科技辑》;20150115;第9-52 页 *

Also Published As

Publication number Publication date
CN109688120A (zh) 2019-04-26

Similar Documents

Publication Publication Date Title
CN109688120B (zh) 基于改进RBAC模型及Spring Security框架的动态权限管理系统
CN104769908B (zh) 基于ldap的多租户云中身份管理系统
US8060932B2 (en) Modular enterprise authorization solution
US9384361B2 (en) Distributed event system for relational models
US9805209B2 (en) Systems and methodologies for managing document access permissions
US20200334374A1 (en) Application specific schema extensions for a hierarchical data structure
CN110443010A (zh) 一种在信息系统中权限可视化配置控制方法、装置、终端及存储介质
CN107147728B (zh) 一种对象存储系统多租户的管理方法
US20090063437A1 (en) Secure hosted databases
MX2007014551A (es) Autorizacion unificada para aplicaciones heterogeneas.
CN110457891A (zh) 一种权限配置界面显示方法、装置、终端以及存储介质
CN109587233A (zh) 多云容器管理方法、设备及计算机可读存储介质
WO2016026320A1 (zh) 访问控制方法及装置
US11425132B2 (en) Cross-domain authentication in a multi-entity database system
CN111563215B (zh) 前端操作权限的控制方法、装置以及相关设备
CN114995879B (zh) 一种基于低代码化平台的信息处理方法及系统
US20220385596A1 (en) Protecting integration between resources of different services using service-generated dependency tags
US20230224304A1 (en) Resource access control in cloud environments
CN110888695A (zh) 一种基于权限生成页面的方法和装置
US20180144150A1 (en) Unified instance authorization based on attributes and hierarchy assignment
US20120216240A1 (en) Providing data security through declarative modeling of queries
KR101570980B1 (ko) 멀티 테넌트 환경의 공통 코드 관리 방법, 이를 수행하는 공통 코드 관리 서버 및 이를 저장하는 기록매체
US20120323937A1 (en) Bulk create, update and delete (cud) database operations for table inheritance
CN115422526B (zh) 角色权限管理方法、设备及存储介质
CN110188573B (zh) 分区授权方法、装置、设备及计算机可读存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant