CN109688120B - 基于改进RBAC模型及Spring Security框架的动态权限管理*** - Google Patents
基于改进RBAC模型及Spring Security框架的动态权限管理*** Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 claims abstract description 28
- 238000010845 search algorithm Methods 0.000 claims description 6
- 238000012986 modification Methods 0.000 claims description 5
- 230000004048 modification Effects 0.000 claims description 5
- 238000011161 development Methods 0.000 claims description 4
- 238000004458 analytical method Methods 0.000 claims description 3
- 238000012217 deletion Methods 0.000 claims description 3
- 230000037430 deletion Effects 0.000 claims description 3
- 238000004806 packaging method and process Methods 0.000 claims description 3
- 230000008569 process Effects 0.000 claims description 3
- 230000004044 response Effects 0.000 claims description 3
- 238000007726 management method Methods 0.000 description 35
- 238000010586 diagram Methods 0.000 description 6
- 238000012795 verification Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000013138 pruning Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/20—Network architectures or network communication protocols for network security for managing network security; network security policies in general
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/30—Network architectures or network communication protocols for network security for supporting lawful interception, monitoring or retaining of communications or communication related information
- H04L63/306—Network 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
- H04L67/025—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP] for remote control or remote monitoring of applications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/14—Network analysis or design
- H04L41/145—Network 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(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来实现菜单的折叠。
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)
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架构的权限控制方法 |
CN111556005B (zh) * | 2019-12-31 | 2023-08-08 | 远景智能国际私人投资有限公司 | 权限管理方法、装置、电子设备及存储介质 |
CN111143824B (zh) * | 2019-12-31 | 2022-06-10 | 奇安信科技集团股份有限公司 | 冗余权限的确定方法、装置、计算机设备和可读存储介质 |
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)
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)
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模型的分级授权方法 |
-
2018
- 2018-12-14 CN CN201811535280.0A patent/CN109688120B/zh active Active
Patent Citations (4)
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)
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的多租户云中身份管理*** | |
CN101408899B (zh) | 一种网站多数据源切换方法和装置 | |
US8060932B2 (en) | Modular enterprise authorization solution | |
US9384361B2 (en) | Distributed event system for relational models | |
US11675774B2 (en) | Remote policy validation for managing distributed system resources | |
US9805209B2 (en) | Systems and methodologies for managing document access permissions | |
CN110443010A (zh) | 一种在信息***中权限可视化配置控制方法、装置、终端及存储介质 | |
CN110188573B (zh) | 分区授权方法、装置、设备及计算机可读存储介质 | |
CN107147728B (zh) | 一种对象存储***多租户的管理方法 | |
US20090063437A1 (en) | Secure hosted databases | |
CN110457891A (zh) | 一种权限配置界面显示方法、装置、终端以及存储介质 | |
MX2007014551A (es) | Autorizacion unificada para aplicaciones heterogeneas. | |
WO2016026320A1 (zh) | 访问控制方法及装置 | |
You et al. | [Retracted] Research and Design of Docker Technology Based Authority Management System | |
CN111563215B (zh) | 前端操作权限的控制方法、装置以及相关设备 | |
CN112818038A (zh) | 基于区块链和ipfs组合的数据管理方法及相关设备 | |
CN114995879B (zh) | 一种基于低代码化平台的信息处理方法及*** | |
US20230224304A1 (en) | Resource access control in cloud environments | |
CN110888695A (zh) | 一种基于权限生成页面的方法和装置 | |
US20120323937A1 (en) | Bulk create, update and delete (cud) database operations for table inheritance | |
US20120216240A1 (en) | Providing data security through declarative modeling of queries | |
KR101570980B1 (ko) | 멀티 테넌트 환경의 공통 코드 관리 방법, 이를 수행하는 공통 코드 관리 서버 및 이를 저장하는 기록매체 | |
CN115422526B (zh) | 角色权限管理方法、设备及存储介质 | |
US20240236107A1 (en) | Cloud based application access privilege governance |
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 |