CN117332393A - 权限验证方法、装置、设备及存储介质 - Google Patents
权限验证方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN117332393A CN117332393A CN202311315407.9A CN202311315407A CN117332393A CN 117332393 A CN117332393 A CN 117332393A CN 202311315407 A CN202311315407 A CN 202311315407A CN 117332393 A CN117332393 A CN 117332393A
- Authority
- CN
- China
- Prior art keywords
- list
- authority
- service request
- user
- target
- 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.)
- Pending
Links
- 238000012795 verification Methods 0.000 title claims abstract description 182
- 238000000034 method Methods 0.000 title claims abstract description 63
- 238000012545 processing Methods 0.000 claims description 36
- 238000004590 computer program Methods 0.000 claims description 10
- 230000008569 process Effects 0.000 claims description 10
- 238000013461 design Methods 0.000 description 18
- 230000006870 function Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 238000013475 authorization Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/955—Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
- G06F16/9566—URL specific, e.g. using aliases, detecting broken or misspelled links
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/957—Browsing optimisation, e.g. caching or content distillation
- G06F16/9574—Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/45—Structures or tools for the administration of authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2141—Access rights, e.g. capability lists, access control lists, access tables, access matrices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Storage Device Security (AREA)
Abstract
本申请提供一种权限验证方法、装置、设备及存储介质。涉及资源管理技术领域。该方法通过获取至少一个业务请求,业务请求中包括统一资源标识符uri至少一个业务请求是至少一个用户通过分布式系统中的至少一个应用系统输入的;调用验权模块,验权模块是运行在二方包中的;通过验权模块;确定uri未存储在缓存列表中时,通过验权模块,获取用户对应的目标角色列表和目标权限列表,验证业务请求的权限,并将权限验证结果返回给用户的应用系统,缓存列表中的uri均为不进行权限控制的uri,缓存列表、目标角色列表和目标权限列表均为存储在redis中的redis缓存。这样,提升权限验证的效率,使得用户可以较快的得到权限验证的结果,提升用户体验。
Description
技术领域
本申请涉及资源管理技术领域,尤其涉及一种权限验证方法、装置、设备及存储介质。
背景技术
越权访问(Broken Access Control,简称BAC)作为应用程序中一种常见的系统安全问题,特别是在分布式系统中较为常见。因此,在用户进行数据访问时,需要对用户的访问权限进行验证,以降低越权访问发生的概率。
目前,在分布式系统中,微服务之间通过表述性状态传递(RepresentationalState Transfer,简称REST)或者远程过程调用(Remote Procedure Call,简称RPC)的形式进行交互。当接收到用户输入的请求时,通过REST或者RPC,调用用于进行验证的微服务,通过调用的微服务,根据用户的信息对该业务请求的权限进行验证,以确定用户是否有该业务请求的权限。
然而,通过REST或者RPC进行的调用均属于网络调用,受到网络性能的约束,可能会存在权限验证较慢的情况,使得权限验证花费的时间较长,用户等待权限验证结果的时间较长,权限验证的效率较低,影响用户体验。
发明内容
本申请提供一种权限验证方法、装置、设备及存储介质,用以解决现有技术中由于网络调用而导致权限验证验证效率较低,从而影响用户体验的问题。
第一方面,本申请提供一种权限验证方法,包括:
获取至少一个业务请求,所述业务请求中包括统一资源标识符uri所述至少一个业务请求是至少一个用户通过分布式系统中的至少一个应用系统输入的,所述业务请求与所述用户一一对应;
调用验权模块,所述验权模块是运行在二方包中的;
通过所述验权模块,针对所述至少一个业务请求中的每个业务请求,判断所述uri是否存在于缓存列表中,所述缓存列表为存储在所述分布式系统的远程字典服务redis中的redis缓存,所述缓存列表中包括至少一个uri,所述至少一个uri均为不进行权限控制的uri;
当确定所述uri未存储在缓存列表中时,通过所述验权模块,获取所述用户对应的目标角色列表和目标权限列表,所述目标角色列表和所述目标权限列表均为存储在所述redis中的redis缓存;
根据所述目标角色列表和所述目标权限列表,验证所述业务请求的权限,并将权限验证结果返回给所述用户的应用系统。
在一种可能的设计中,所述根据所述目标角色列表和所述目标权限列表,验证所述业务请求的权限,包括:
根据所述业务请求中的用户信息和菜单信息,在所述redis中存储的多个角色列表中获取所述用户的所述目标角色列表;
判断所述目标角色列表是否为空列表;
若所述目标角色列表不是空列表,则在所述目标角色列表中获取所述用户的角色标识;
根据所述角色标识对应的目标权限列表,验证所述业务请求的权限。
在一种可能的设计中,所述根据所述角色标识对应的权限列表,验证所述业务请求的权限,包括:
根据所述角色标识,在所述redis中存储的多个权限列表中获取所述角色标识对应的所述目标权限列表;
在所述目标权限列表中,确定所述用户的所述业务请求对应的权限验证结果。
在一种可能的设计中,所述将验证结果返回给所述用户的应用系统,包括:
当所述权限验证结果为第一验证结果时,调用所述业务请求对应的接口,以对所述业务请求进行处理,并将处理结果返回给用户的应用系统,所述第一验证结果用于表示所述用户具有所述业务请求的权限;
当所述权限验证结果为第二验证结果时,将所述第二验证结果返回给所述用户的应用系统,所述第二验证结果用于表示所述用户不具有所述业务请求的权限。
在一种可能的设计中,所述调用验权模块,包括:
针对所述至少一个业务请求中的每个业务请求,通过拦截器拦截所述业务请求;
通过预先设定的接口,调用所述验权模块。
在一种可能的设计中,所述方法还包括:
接收管理员输入的新增业务请求的信息,
根据所述新增业务请求的信息对所述redis中的权限列表进行更新。
第二方面,本申请提供一种权限验证装置,包括:
获取模块,用于获取至少一个业务请求,所述业务请求中包括统一资源标识符uri所述至少一个业务请求是至少一个用户通过分布式系统中的至少一个应用系统输入的,所述业务请求与所述用户一一对应;
调用模块,用于调用验权模块,所述验权模块是运行在二方包中的;
处理模块,用于通过所述验权模块,针对所述至少一个业务请求中的每个业务请求,判断所述uri是否存在于缓存列表中,所述缓存列表为存储在所述分布式系统的远程字典服务redis中的redis缓存,所述缓存列表中包括至少一个uri,所述至少一个uri均为不进行权限控制的uri;当确定所述uri未存储在缓存列表中时,通过所述验权模块,获取所述用户对应的目标角色列表和目标权限列表,所述目标角色列表和所述目标权限列表均为存储在所述redis中的redis缓存;根据所述目标角色列表和所述目标权限列表,验证所述业务请求的权限,将权限验证结果返回给所述用户的应用系统。
在一种可能的设计中,所述处理模块,具体用于根据所述业务请求中的用户信息和菜单信息,在所述redis中存储的多个角色列表中获取所述用户的所述目标角色列表;判断所述目标角色列表是否为空列表;若所述目标角色列表不是空列表,则在所述目标角色列表中获取所述用户的角色标识;根据所述角色标识对应的目标权限列表,验证所述业务请求的权限。
在一种可能的设计中,所述处理模块,具体用于根据所述角色标识,在所述redis中存储的多个权限列表中获取所述角色标识对应的所述目标权限列表;在所述目标权限列表中,确定所述用户的所述业务请求对应的权限验证结果。
在一种可能的设计中,所述处理模块,具体用于当所述权限验证结果为第一验证结果时,调用所述业务请求对应的接口,以对所述业务请求进行处理,并将处理结果返回给用户的应用系统,所述第一验证结果用于表示所述用户具有所述业务请求的权限;当所述权限验证结果为第二验证结果时,将所述第二验证结果返回给所述用户的应用系统,所述第二验证结果用于表示所述用户不具有所述业务请求的权限。
在一种可能的设计中,所述调用模块,具体用于针对所述至少一个业务请求中的每个业务请求,通过拦截器拦截所述业务请求;通过预先设定的接口,调用所述验权模块。
在一种可能的设计中,所述装置还包括更新模块,所述更新模块,用于接收管理员输入的新增业务请求的信息,根据所述新增业务请求的信息对所述redis中的权限列表进行更新。
第三方面,本申请实施例提供一种电子设备,包括:至少一个处理器和存储器;所述存储器存储计算机执行指令;所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上第一方面以及第一方面各种可能的设计所述的权限验证方法。
第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一方面以及第一方面各种可能的设计所述的权限验证方法。
第五方面,本申请实施例提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时,实现如上第一方面以及第一方面各种可能的设计所述的权限验证方法。
本申请提供的权限验证方法、装置、设备及存储介质,通过获取至少一个业务请求,业务请求中包括统一资源标识符uri至少一个业务请求是至少一个用户通过分布式系统中的至少一个应用系统输入的,业务请求与用户一一对应;调用验权模块,验权模块是运行在二方包中的;通过验权模块,针对至少一个业务请求中的每个业务请求,判断uri是否存在于缓存列表中,缓存列表为存储在分布式系统的远程字典服务redis中的redis缓存,缓存列表中包括至少一个uri,至少一个uri均为不进行权限控制的uri;当确定uri未存储在缓存列表中时,通过验权模块,获取用户对应的目标角色列表和目标权限列表,目标角色列表和目标权限列表均为存储在redis中的redis缓存;根据目标角色列表和目标权限列表,验证业务请求的权限,并将权限验证结果返回给用户的应用系统。这样,通过二方包的形式运行验权模块,由于二方包的调用属于函数调用,相比于网络调用而言,调用响应的速度较快,可以节省权限验证的花费的时间。此外,通过将各个列表以redis缓存的方式存储在redis中,由于redis支持高并发,可以减少获取列表花费的时间。因此,本申请提供权限验证方法,可以减少权限验证花费的时长,提升权限验证的效率,使得用户可以较快的得到权限验证的结果,提升用户体验。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为本申请实施例提供的一种权限验证方法的流程示意图;
图2为本申请实施例提供的一种验证业务请求的权限的方法流程示意图;
图3为本申请实施例提供的一种权限验证装置的结构示意图;
图4为本申请实施例提供的一种电子设备的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
需要说明的是,本申请的技术方案中,所涉及的金融数据或用户数据等信息的收集、存储、使用、加工、传输、提供和公开等处理,均符合相关法律法规的规定,且不违背公序良俗。本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
名词解释:
1、越权访问,是指用户使用账号访问该账号没有权限的数据,可以包括垂直越权和水平越权。其中,垂直越权是指使用权限低的用户可以访问到权限较高的用户。水平越权是指相同权限下不同的用户可以互相访问。
2、分布式系统:分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。
3、微服务:又叫微服务架构,是一种软件架构方式。它将应用构建成一系列按业务领域划分模块的、小的自主管理的服务。
4、远程字典服务(Remote Dictionary Server,简称redis):是一个高性能的开源的、C语言写的非关系型数据库(Not only SQL,简称Nosql),数据保存在内存中。将数据缓存在redis中,也就是存在了内存中。由于内存支持高并发访问,每秒查询率(Queries PerSecond,简称QPS)较高,因此,可以通过redis完成瞬间处理大量请求。缓存的使用可以提升系统的响应能力,提升了用户体验。服务端缓存减轻数据库服务器的压力。
越权访问是Web应用程序中一种常见的系统安全问题,特别是分布式系统中。在分布式系统中,通过控制用户对资源的访问权限,可以减少越权访问情况出现的概率。越权访问包括垂直越权和水平越权,垂直越权是指应用在检查授权时存在系统安全问题,使得某一用户在获得低权限用户账户后,利用一些方式绕过权限检查,从而使低权限的用户可以不受控制的访问高权限用户的资源。该问题的出现主要是因为服务端对客户端请求的数据较为信任而遗漏了权限的判定,使得权限验证不充分,从而出现处置越权访问的情况。
目前,可以基于资源和角色的配置关系进行垂直越权的控制,减少垂直越权的出现。在分布式系统中,微服务之间通常通过REST或RPC的方式进行交互。当接收到用户输入的业务请求时,通过REST或RPC,使用超文本传输协议(Hypertext Transfer Protocol,HTTP)请求调用用于进行权限验证的用户服务,并通过用户服务对用户与业务请求的权限进行验证。
通过用户服务对用户与业务请求的权限进行验证的过程具体可以包括下述步骤:步骤1、获取业务请求中的URL地址,并提取应用编程接口(Application ProgramInterface,简称API)名称;步骤2、从业务请求中的标识token中获取用户信息;步骤3、获取用户信息对应的角色id;步骤4、判断用户信息对应的角色是否具有权限访问当前API接口的权限。
然而,通过REST或者RPC进行的调用均属于网络调用,受到网络性能的约束,可能会存在权限验证较慢的情况。每个业务请求都需要进行权限验证,在业务请求高并发的情况下,更加有可能出现权限验证较慢的情况,使得权限验证花费的时间较长,用户需要等待较长的时间才能收到基于该业务请求的反馈,可能出现应用系统卡顿的情况,影响用户体验。
基于此,本申请实施例提供了一种权限验证方法,引入了二方包实现验权模块,通过验权模块对业务请求的权限进行验证,并且,在对业务请求的权限进行验证时,使用的列表是存储在redis中的。这样,由于二方包的调用方式不是使用网络调用,而是可以通过函数调用的方式可以实现,也就是说,当需要对业务请求进行验权时,只需要通过函数调用的方式调用二方包就可以了,与网络调用的方式相比,稳定性较高,且调用所需要的时间较短。此外,由于将列表存储在redis中,就相当于存储在内存中,而内存支持高并发访问,每秒查询率(Queries Per Second,简称QPS)较高,因此,可以通过redis完成瞬间处理大量请求。当出现权限验证高并发的情况时,可以减轻数据库服务器的压力,减少权限验证花费的时间,提升用户体验。
需要说明的是,本申请实施例提供的权限验证方法可以应用于分布式系统中。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
图1为本申请实施例提供的一种权限验证方法的流程示意图。该权限验证方法可以由软件和/或硬件装置执行,例如,该硬件装置可以为权限验证装置,该权限验证装置可以为电子设备或者电子设备中的处理芯片。
示例的,请参见图1所示,该权限验证方法可以包括:
S101、获取至少一个业务请求,业务请求中包括统一资源标识符uri至少一个业务请求是至少一个用户通过分布式系统中的至少一个应用系统输入的,业务请求与用户一一对应。
统一资源标识符(Uniform Resource Identifier,简称uri)是一个用于标识某一互联网资源名称的字符串。该种标识允许用户对任何(包括本地和互联网)的资源通过特定的协议进行交互操作。
在分布式系统中可以包括多个应用系统,例如,在一个用于购物的分布式系统中,可以包括买家使用的应用系统和卖家使用的应用系统。在例如,在银行领域中,分布式系统中可以包括提供的用户使用的应用程序系统、提供给用户使用的网页系统,提供给银行业务人员使用的业务处理系统等。本申请实施例对于分布式系统中应用系统的数据不做限定。
在分布式系统运行过程中,使用不同应用系统的用户可以通过各自的应用系统提交业务申请,可能会出现同一时刻或者同一时间段内,提交了多个业务申请的情况。例如,当商家在某一时间点举办线上活动时,在该时间点可能会存在大量的用户或不同的业务申请的情况。
在本申请实施例中,至少一个业务请求可以是获取到的同一时刻用户提交的业务请求,可以是获取到的在较短的时间间隔内用户提交的业务请求,本申请实施例对业务申请的数量不做限定。
S102、调用验权模块,验权模块是运行在二方包中的。
需要说明的是,在分布式系统的开发阶段,技术人员可以将验权模块对应的代码直接打成二方包,以便于分布式系统中的其他系统直接引入该二方包,使用二方包中的验权模块进行权限验证,可以减少代码冗余的情况。
示例性的,当接收到至少一个业务请求时,针对至少一个业务请求中的每个业务请求,可以通过拦截器拦截业务请求,通过预先设定的接口,调用验权模块。
拦截器可以为预先设定的,用于拦截业务请求,可以减少业务请求直接被执行而导致出现越权访问的问题。
这样,通过拦截器拦截业务请求,可以减少直接处理业务请求而导致出现越权访问的问题。并且,通过预先设定的界河口直接调用验权模块,与通过网络调用的方式相比,速度较快,可以减少权限验证花费的时间,提升权限验证的效率。
S103、通过验权模块,针对至少一个业务请求中的每个业务请求,判断uri是否存在于缓存列表中,缓存列表为存储在分布式系统的远程字典服务redis中的redis缓存,缓存列表中包括至少一个uri,至少一个uri均为不进行权限控制的uri。
示例性的,通过验权模块进行权限验证时,可以先在redis中获取缓存列表,该缓存列表中存储的至少一个uri为需要进行权限验证的业务请求的uri。因此,通过判断uri是否存在于缓存列表中,可以确定业务请求是否需要进行权限验证。
当确定uri存储在缓存列表中时,则表示该业务请求不需要进行权限的验证,可以正常处理该业务请求。
这样,通过在redis中获取缓存列表,可以减少获取缓存列表花费的时间,进一步提升权限验证的效率。
S104、当确定uri未存储在缓存列表中时,通过验权模块,获取用户对应的目标角色列表和目标权限列表,目标角色列表和目标权限列表均为存储在redis中的redis缓存。
示例性的,当确定uri未存储在缓存列表中时,表示该业务请求需要进行权限验证。可以通过验权模块,在redis中获取用户对应的目标角色列表和目标权限列表,以对权限进行验证。
S105、根据目标角色列表和目标权限列表,验证业务请求的权限,并将权限验证结果返回给用户的应用系统。
示例性的,验证结果可以包括第一验证结果和第二验证结果两种。其中,第一验证结果用于表示用户具有业务请求的权限,第二验证结果用于表示用户不具有业务请求的权限。
当权限验证结果为第一验证结果时,可以调用业务请求对应的接口,以对业务请求进行处理,并将处理结果返回给用户的应用系统。例如,当业务请求为请求访问某个网页时,对业务请求进行处理,可以根据该业务请求获取网页的数据,将该数据返回给用户的应用系统,以在用户的应用系统上显示该网页。
当权限验证结果为第二验证结果时,将第二验证结果返回给用户的应用系统。例如,当业务请求为请求访问某个网页时,当用户没有访问该网页的权限时,可以将无权限访问的结果返回给用户的应用系统,以在用户的应用系统上显示用于提示用户无权限访问的提示信息。
这样,当权限验证结束后,用户可以及时了解到权限验证的结果。
由此可见,本申请实施例提供的权限验证方法,通过二方包的形式运行用于对用户的业务请求进行权限验证的验权模块,由于二方包的调用属于函数调用,相比于网络调用而言,调用响应的速度较快,可以节省权限验证的花费的时间。并且,在分布式系统中可能包括多个应用系统,对于现有技术而言,对于不同的应用系统可以分别需要一个对应的用户服务进行权限验证,而本申请通过二方包的形式运行验权模块,使得不同的系统均可以引入该二方包,即可以使用该二方包中的验权模块,不需要多个用户服务进行权限验证。此外,通过将各个列表以redis缓存的方式存储在redis中,由于redis支持高并发,可以减少获取列表花费的时间。因此,本申请提供权限验证方法,可以减少权限验证花费的时长,提升权限验证的效率,使得用户可以较快的得到权限验证的结果,提升用户体验。
在本申请实施例中,根据目标角色列表和目标权限列表,验证业务请求的权限,可以参见图2所示,图2为本申请实施例提供的一种验证业务请求的权限的方法流程示意图。
如图2所示,该验证业务请求的权限的方法可以包括下述步骤:
S201、根据业务请求中的用户信息或菜单信息,在redis中存储的多个角色列表中获取用户的目标角色列表。
用户信息可以为用户身份标识(Identity document,简称ID),也可以为用户的其他信息,本申请实施例对于用户信息不做具体限定。
菜单信息可以为业务请求的菜单信息,由于该业务请求是用户对某个控件执行操作之后输入的,因此,菜单信息可以为该业务请求的功能、作用、对应的控件信息等,本申请实施例对此不做限定。
在本申请实施例中,redis中存储的多个角色列表可以对应于不同的用户信息。在redis中可以根据用户ID在多个角色列表中获取与用户ID对应的第一角色标识。
例如,redis中存储的角色列表可如下述表1所述。
表1
字段中文名 | 字段英文名 | 字段类型 |
用户ID | user_id | BIGINT |
角色ID | role_id | BIGINT |
这样,可以根据用户信息中的用户ID确定包含有用户ID的第一角色列表。
并且,在redis中还可以存储有菜单表和角色菜单表。可以根据菜单表和角色菜单表确定第二角色列表。根据其中,菜单表如下述表2所述,角色菜单表如下述表3所述。
表2
字段中文名 | 字段英文名 | 字段类型 |
菜单ID | menu_id | BIGINT |
菜单名称 | menu_nm | VARchar(100) |
表3
字段中文名 | 字段英文名 | 字段类型 |
菜单ID | menu_id | BIGINT |
角色ID | role_id | BIGINT |
示例性的,可以在菜单表中,根据菜单名称确定菜单ID。进一步的,在根据菜单ID确定角色菜单表,该角色菜单表可以为第二角色列表。
示例性的,获取目标角色标识时,可以判断目标角色列表是否为空列表,若目标角色列表为空列表,则表示用户没有权限,可以向用户的应用系统返回提示信息,用于提示用户当前的业务请求无权限。
具体的,可以判断上述第一角色列表和第二角色列表是否均为空列表,若均为空列表,则表示用户没有权限。
若目标角色列表不是空列表,具体的,若上述第一角色列表和第二角色列表存在一个角色列表不是空列表,则可以执行下述步骤S202:
S202、当目标角色列表不是空列表时,在目标角色列表中获取用户的角色标识。
角色标识可以为上述表中的角色ID。
示例性的,当上述第一角色列表和第二角色列表其中一个不是空列表时,获取不是空列表的角色列表中的角色ID。当上述第一角色列表和第二角色列表均不是空列表,则获取两个列表中的角色ID。
S203、根据角色标识,在redis中存储的多个权限列表中获取角色标识对应的目标权限列表。
结合上述步骤所述,角色标识可能为1个,也可能为2个。因此,在redis中获取到的目标权限列表也可能为1个,也可能为2个。
S204、在目标权限列表中,确定用户的业务请求对应的权限验证结果。
示例性的,目标权限列表中可以存储有角色ID和业务请求的权限验证结果。当目标权限列表为1个时,则可以在目标权限列表中,确定角色ID对应的业务请求的权限验证结果,该结果即为最终的权限验证结果。
当目标权限列表为2个时,可以分别在权限列表中,确定角色ID对应的业务请求的权限验证结果,得到两个结果。若两个权限验证结果一致,则将该权限验证结果作为最终的权限验证结果。若两个权限验证结果不一致,则确定权限验证结果为无权限。
这样,通过使用redis中存储的各个列表进行权限验证,使得权限验证结果的准确度更高,可以减少越权访问的发生。
需要说明的是,缓存列表、角色列表和权限列表在redis中存储的方式可参见下述表4所述。
表4
缓存标识 | 存储内容 | Key | Value |
A | 业务uri列表 | all_perimit::{type} | uri List |
B | 角色ID列表 | role_detail::{userId}_role | roleId List |
C | 业务uri列表 | button_detail::{roleId}_button | uri List |
需要说明的是,上述表格中的英文均可以用于表示字段,以便于在redis中获取。
本申请实施例仅以上述表格的内容为例进行说明,并不构成任何限定。
在本申请实施例中,分布式系统在运行过程中,可能会存在在应用系统中新增功能的情况,此时,技术人员则需要为新增的功能设置对应的权限信息,以便于后续当用户使用该功能时,对该功能产生的业务请求进行权限验证。
示例性的,可以接收管理员输入的新增业务请求的信息,根据新增业务请求的信息对redis中的权限列表进行更新。
管理员可以为后台负责开发和维护的技术人员。新增业务请求的信息,可以包括业务请求的uri、业务请求的菜单信息、业务请求对于哪一种角色的用户允许使用等,本申请实施例对此不做限定。
示例性的,根据新增业务请求的信息对redis中的权限列表进行更新,可以在权限列表中增加用户角色与新增业务请求的验证结果的对应关系。
这样,当管理员可以通过新增的方式,对redis中的权限列表进行更新。
图3为本申请实施例提供的一种权限验证装置30的结构示意图,示例的,请参见图3所示,该权限验证装置30可以包括:
获取模块301,用于获取至少一个业务请求,业务请求中包括统一资源标识符uri至少一个业务请求是至少一个用户通过分布式系统中的至少一个应用系统输入的,业务请求与用户一一对应。
调用模块302,用于调用验权模块,验权模块是运行在二方包中的。
处理模块303,用于通过验权模块,针对至少一个业务请求中的每个业务请求,判断uri是否存在于缓存列表中,缓存列表为存储在分布式系统的远程字典服务redis中的redis缓存,缓存列表中包括至少一个uri,至少一个uri均为不进行权限控制的uri;当确定uri未存储在缓存列表中时,通过验权模块,获取用户对应的目标角色列表和目标权限列表,目标角色列表和目标权限列表均为存储在redis中的redis缓存;根据目标角色列表和目标权限列表,验证业务请求的权限,将权限验证结果返回给用户的应用系统。
在一种可能的设计中,处理模块303,具体用于根据业务请求中的用户信息和菜单信息,在redis中存储的多个角色列表中获取用户的目标角色列表;判断目标角色列表是否为空列表;若目标角色列表不是空列表,则在目标角色列表中获取用户的角色标识;根据角色标识对应的目标权限列表,验证业务请求的权限。
在一种可能的设计中,处理模块303,具体用于根据角色标识,在redis中存储的多个权限列表中获取角色标识对应的目标权限列表;在目标权限列表中,确定用户的业务请求对应的权限验证结果。
在一种可能的设计中,处理模块303,具体用于当权限验证结果为第一验证结果时,调用业务请求对应的接口,以对业务请求进行处理,并将处理结果返回给用户的应用系统,第一验证结果用于表示用户具有业务请求的权限;当权限验证结果为第二验证结果时,将第二验证结果返回给用户的应用系统,第二验证结果用于表示用户不具有业务请求的权限。
在一种可能的设计中,调用模块302,具体用于针对至少一个业务请求中的每个业务请求,通过拦截器拦截业务请求;通过预先设定的接口,调用验权模块。
在一种可能的设计中,装置还包括更新模块304,更新模块304,用于接收管理员输入的新增业务请求的信息,根据新增业务请求的信息对redis中的权限列表进行更新。
本申请实施例提供的权限验证装置,可以执行上述任一实施例中的权限验证方法的技术方案,其实现原理以及有益效果与权限验证方法的实现原理及有益效果类似,可参见权限验证方法的实现原理及有益效果,此处不再进行赘述。
需要说明的是,应理解以上装置的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块通过处理元件调用软件的形式实现,部分模块通过硬件的形式实现。各模块可以为单独设立的处理元件,也可以集成在上述装置的某一个芯片中实现,此外,也可以以程序代码的形式存储于上述装置的存储器中,由上述装置的某一个处理元件调用并执行以上各模块的功能。此外这些模块全部或部分可以集成在一起,也可以独立实现。这里的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
图4为本申请实施例提供的一种电子设备的结构示意图。如图4所示,该电子设备可以包括:收发器41、处理器42、存储器43。
处理器42执行存储器存储的计算机执行指令,使得处理器42执行上述实施例中的方案。处理器42可以是通用处理器,包括中央处理器CPU、网络处理器(network processor,NP)等;还可以是数字信号处理器DSP、专用集成电路ASIC、现场可编程门阵列FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
存储器43通过系统总线与处理器42连接并完成相互间的通信,存储器43用于存储计算机程序指令。
收发器41可以用于获取待运行任务和待运行任务的配置信息。
系统总线可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。系统总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。收发器用于实现数据库访问装置与其他计算机(例如客户端、读写库和只读库)之间的通信。存储器可能包含随机存取存储器(randomaccess memory,RAM),也可能还包括非易失性存储器(non-volatile memory)。
本申请实施例还提供一种运行指令的芯片,该芯片用于执行上述实施例中权限验证方法的技术方案。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机指令,当该计算机指令在计算机上运行时,使得计算机执行上述实施例权限验证方法的技术方案。
本申请实施例还提供一种计算机程序产品,该计算机程序产品包括计算机程序,其存储在计算机可读存储介质中,至少一个处理器可以从计算机可读存储介质读取计算机程序,至少一个处理器执行计算机程序时可实现上述实施例中权限验证方法的技术方案。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个单元中。上述模块成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本申请各个实施例方法的部分步骤。
应理解,上述处理器可以是中央处理单元(Central Processing Unit,简称CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器可能包含高速RAM存储器,也可能还包括非易失性存储NVM,例如至少一个磁盘存储器,还可以为U盘、移动硬盘、只读存储器、磁盘或光盘等。
总线可以是工业标准体系结构(Industry Standard Architecture,简称ISA)总线、外部设备互连(Peripheral Component Interconnect,简称PCI)总线或扩展工业标准体系结构(Extended Industry Standard Architecture,简称EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本申请附图中的总线并不限定仅有一根总线或一种类型的总线。
上述存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。存储介质可以是通用或专用计算机能够存取的任何可用介质。
一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于专用集成电路(Application Specific Integrated Circuits,简称ASIC)中。当然,处理器和存储介质也可以作为分立组件存在于电控单元或主控设备中。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (10)
1.一种权限验证方法,其特征在于,包括:
获取至少一个业务请求,所述业务请求中包括统一资源标识符uri所述至少一个业务请求是至少一个用户通过分布式系统中的至少一个应用系统输入的,所述业务请求与所述用户一一对应;
调用验权模块,所述验权模块是运行在二方包中的;
通过所述验权模块,针对所述至少一个业务请求中的每个业务请求,判断所述uri是否存在于缓存列表中,所述缓存列表为存储在所述分布式系统的远程字典服务redis中的redis缓存,所述缓存列表中包括至少一个uri,所述至少一个uri均为不进行权限控制的uri;
当确定所述uri未存储在缓存列表中时,通过所述验权模块,获取所述用户对应的目标角色列表和目标权限列表,所述目标角色列表和所述目标权限列表均为存储在所述redis中的redis缓存;
根据所述目标角色列表和所述目标权限列表,验证所述业务请求的权限,并将权限验证结果返回给所述用户的应用系统。
2.根据权利要求1所述的方法,其特征在于,所述根据所述目标角色列表和所述目标权限列表,验证所述业务请求的权限,包括:
根据所述业务请求中的用户信息和菜单信息,在所述redis中存储的多个角色列表中获取所述用户的所述目标角色列表;
判断所述目标角色列表是否为空列表;
若所述目标角色列表不是空列表,则在所述目标角色列表中获取所述用户的角色标识;
根据所述角色标识对应的目标权限列表,验证所述业务请求的权限。
3.根据权利要求2所述的方法,其特征在于,所述根据所述角色标识对应的权限列表,验证所述业务请求的权限,包括:
根据所述角色标识,在所述redis中存储的多个权限列表中获取所述角色标识对应的所述目标权限列表;
在所述目标权限列表中,确定所述用户的所述业务请求对应的权限验证结果。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述将权限验证结果返回给所述用户的应用系统,包括:
当所述权限验证结果为第一验证结果时,调用所述业务请求对应的接口,以对所述业务请求进行处理,并将处理结果返回给用户的应用系统,所述第一验证结果用于表示所述用户具有所述业务请求的权限;
当所述权限验证结果为第二验证结果时,将所述第二验证结果返回给所述用户的应用系统,所述第二验证结果用于表示所述用户不具有所述业务请求的权限。
5.根据权利要求1-3任一项所述的方法,其特征在于,所述调用验权模块,包括:
针对所述至少一个业务请求中的每个业务请求,通过拦截器拦截所述业务请求;
通过预先设定的接口,调用所述验权模块。
6.根据权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
接收管理员输入的新增业务请求的信息,
根据所述新增业务请求的信息对所述redis中的权限列表进行更新。
7.一种权限验证装置,其特征在于,包括:
获取模块,用于获取至少一个业务请求,所述业务请求中包括统一资源标识符uri所述至少一个业务请求是至少一个用户通过分布式系统中的至少一个应用系统输入的,所述业务请求与所述用户一一对应;
调用模块,用于调用验权模块,所述验权模块是运行在二方包中的;
处理模块,用于通过所述验权模块,针对所述至少一个业务请求中的每个业务请求,判断所述uri是否存在于缓存列表中,所述缓存列表为存储在所述分布式系统的远程字典服务redis中的redis缓存,所述缓存列表中包括至少一个uri,所述至少一个uri均为不进行权限控制的uri;当确定所述uri未存储在缓存列表中时,通过所述验权模块,获取所述用户对应的目标角色列表和目标权限列表,所述目标角色列表和所述目标权限列表均为存储在所述redis中的redis缓存;根据所述目标角色列表和所述目标权限列表,验证所述业务请求的权限,将权限验证结果返回给所述用户的应用系统。
8.一种电子设备,其特征在于,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如权利要求1-6中任一项所述的方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1-6中任一项所述的方法。
10.一种计算机程序产品,其特征在于,包括计算机程序,该计算机程序被处理器执行时实现如权利要求1-6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311315407.9A CN117332393A (zh) | 2023-10-11 | 2023-10-11 | 权限验证方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311315407.9A CN117332393A (zh) | 2023-10-11 | 2023-10-11 | 权限验证方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117332393A true CN117332393A (zh) | 2024-01-02 |
Family
ID=89292797
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311315407.9A Pending CN117332393A (zh) | 2023-10-11 | 2023-10-11 | 权限验证方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117332393A (zh) |
-
2023
- 2023-10-11 CN CN202311315407.9A patent/CN117332393A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111698228B (zh) | 系统访问权限授予方法、装置、服务器及存储介质 | |
US10484385B2 (en) | Accessing an application through application clients and web browsers | |
CN112564916A (zh) | 应用于微服务架构的访问客户端认证系统 | |
US10454975B1 (en) | Conditional comptuing resource policies | |
US20170286653A1 (en) | Identity risk score generation and implementation | |
US7865931B1 (en) | Universal authorization and access control security measure for applications | |
US7930760B2 (en) | Centralized enforcement of name-based computer system security rules | |
US9742808B2 (en) | Data access policies | |
EP3471010B1 (en) | Generic runtime protection for transactional data | |
US10831915B2 (en) | Method and system for isolating application data access | |
US9769159B2 (en) | Cookie optimization | |
AU2018403177B2 (en) | Data isolation in distributed hash chains | |
JP6655731B2 (ja) | システム環境及びユーザ行動分析基盤の自己防御保安装置とその作動方法 | |
CN114666124B (zh) | 业务系统登录方法、登录装置、电子设备及存储介质 | |
US11941611B2 (en) | Shareable and nested transactions on hash chains | |
CN113904821A (zh) | 一种身份认证方法及装置、可读存储介质 | |
CN113282591B (zh) | 权限过滤方法、装置、计算机设备及存储介质 | |
CN117216798A (zh) | 访问方法、装置、设备及存储介质 | |
EP3924851B1 (en) | Detecting second-order security vulnerabilities via modelling information flow through persistent storage | |
US11477228B2 (en) | Method and system for blockchain accreditation mechanism based on cybersecurity risk | |
US11934551B2 (en) | Processing per-use requests for user data | |
CN115422526B (zh) | 角色权限管理方法、设备及存储介质 | |
CN108319506B (zh) | 一种数据分层处理方法及装置 | |
CN117332393A (zh) | 权限验证方法、装置、设备及存储介质 | |
US11526446B1 (en) | Modifying caching amongst services from a history of requests and responses |
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 |