CN111984949B - 鉴权方法、装置、电子设备及存储介质 - Google Patents
鉴权方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN111984949B CN111984949B CN202010859534.5A CN202010859534A CN111984949B CN 111984949 B CN111984949 B CN 111984949B CN 202010859534 A CN202010859534 A CN 202010859534A CN 111984949 B CN111984949 B CN 111984949B
- Authority
- CN
- China
- Prior art keywords
- resource
- target
- identifier
- user
- group
- 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 title claims abstract description 43
- 230000007246 mechanism Effects 0.000 claims description 4
- 238000004590 computer program Methods 0.000 claims description 3
- 239000000758 substrate Substances 0.000 claims 2
- 238000012423 maintenance Methods 0.000 abstract description 7
- 238000007726 management method Methods 0.000 description 19
- 238000012217 deletion Methods 0.000 description 10
- 230000037430 deletion Effects 0.000 description 10
- 230000006870 function Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000001914 filtration Methods 0.000 description 4
- 230000006978 adaptation Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000000638 solvent extraction 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
- 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)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本公开实施例关于一种鉴权方法、装置、电子设备及存储介质。该方法包括:接收目标鉴权请求,其请求参数包括用户标识、目标组标识和资源标识,目标组标识包括资源组标识和用户组标识中的至少一个;查询请求参数之间是否存在关联关系;关联关系的类型包括至少两个标识之间的正向关联,用户标识与资源标识之间的负向关联,及用户标识、目标组标识与资源标识之间的负向关联;基于鉴权判定规则,根据查询结果确定鉴权结果,目标鉴权请求用于请求鉴别目标用户是否全局具备目标资源权限,或者是否在目标资源组中或在目标用户组中局部具备目标资源权限。该方法提高了权限管理的灵活度和精细化度,降低了权限管理的维护成本。
Description
技术领域
本公开实施例涉及计算机技术领域,尤其涉及一种鉴权方法、装置、电子设备及存储介质。
背景技术
权限管理,一般是指根据***设置的安全规则或者安全策略,控制用户可以访问而且只能访问自己被授权的资源。
相关技术中,一般通过RBAC(Role-Based Access Control,基于角色的访问控制)模型来实现权限管理。在RBAC模型中,将权限与角色相关联,用户通过成为相关角色的成员而获得对应角色的权限。相应的,在鉴权时,通过识别用户的角色来判断其是否具有相关资源的权限。
但是,角色颗粒度过于粗糙,无法实现灵活且精细化地赋权。而且,随着***用户大幅增加,服务、功能、数据等资源数量大幅增多,权限管理的颗粒度越来越细,在RBAC模型中只能通过大量增加角色来适应此变化,极端情况下需要对每个用户、每个资源权限以及各自的组合建立对应的角色,角色过多必然导致维护成本过高。
发明内容
本公开实施例提供一种鉴权方法、装置、电子设备及存储介质,以解决相关技术中权限管理维护成本过高的问题,提高权限管理的灵活度和精细化度。本公开的技术方案如下:
根据本公开实施例的第一方面,提供一种鉴权方法,包括:
接收目标鉴权请求,所述目标鉴权请求中的请求参数包括用户标识、目标组标识和资源标识,所述目标组标识包括资源组标识和用户组标识中的至少一个;
查询所述请求参数之间是否存在关联关系;所述关联关系的类型包括用户标识、目标组标识与资源标识中至少两个之间的正向关联,用户标识与资源标识之间的负向关联,以及用户标识、目标组标识与资源标识之间的负向关联;
其中,所述正向关联用于指示目标用户或目标用户组具备资源权限,或者目标用户或目标用户组关联目标资源组,或者目标用户与目标用户组存在归属关系,或者目标资源与目标资源组存在归属关系;所述负向关联用于指示目标用户全局不具备目标资源权限,或者目标用户在目标用户组中或在目标资源组中局部不具备目标资源权限;所述目标用户为与用户标识对应的用户,所述目标用户组为与用户组标识对应的用户组,所述目标资源组为与资源组标识对应的资源组,所述目标资源为与资源标识对应的资源;
基于预设的鉴权判定规则,根据查询结果确定与所述目标鉴权请求对应的鉴权结果,其中,所述目标鉴权请求用于请求鉴别目标用户是否全局具备目标资源权限,或者用于请求鉴别目标用户是否在目标资源组中或在目标用户组中局部具备目标资源权限。
根据本公开实施例的第二方面,提供一种鉴权装置,包括:
接收单元,被配置为接收目标鉴权请求,所述目标鉴权请求中的请求参数包括用户标识、目标组标识和资源标识,所述目标组标识包括资源组标识和用户组标识中的至少一个;
查询单元,被配置为查询所述请求参数之间是否存在关联关系;所述关联关系的类型包括用户标识、目标组标识与资源标识中至少两个之间的正向关联,用户标识与资源标识之间的负向关联,以及用户标识、目标组标识与资源标识之间的负向关联;
其中,所述正向关联用于指示目标用户或目标用户组具备资源权限,或者目标用户或目标用户组关联目标资源组,或者目标用户与目标用户组存在归属关系,或者目标资源与目标资源组存在归属关系;所述负向关联用于指示目标用户全局不具备目标资源权限,或者目标用户在目标用户组中或在目标资源组中局部不具备目标资源权限;所述目标用户为与用户标识对应的用户,所述目标用户组为与用户组标识对应的用户组,所述目标资源组为与资源组标识对应的资源组,所述目标资源为与资源标识对应的资源;
鉴权单元,被配置为基于预设的鉴权判定规则,根据查询结果确定与所述目标鉴权请求对应的鉴权结果,其中,所述目标鉴权请求用于请求鉴别目标用户是否全局具备目标资源权限,或者用于请求鉴别目标用户是否在目标资源组中或在目标用户组中局部具备目标资源权限。
根据本公开实施例的第三方面,提供一种电子设备,包括:处理器;用于存储所述处理器可执行指令的存储器;其中,所述处理器被配置为执行所述指令,以实现如本公开任意实施例所述的鉴权方法。
根据本公开实施例的第四方面,提供一种存储介质,所述存储介质中的指令由服务器的处理器执行时,使得服务器能够执行如公开任意实施例所述的鉴权方法。
根据本公开实施例的第五方面,提供一种计算机应用程序产品,用于与电子设备结合使用,所述计算机应用程序产品包括计算机可读存储介质和内嵌于其中的计算机程序机制,经由计算机载入该程序并执行后能够实现如公开任意实施例所述的鉴权方法。
本公开的实施例提供的技术方案至少带来以下有益效果:
提高了权限管理的灵活度和精细化度,降低了权限管理的维护成本,同时也提高了权限管理的可扩展性,使其能够适用于绝大多数的鉴权场景。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是根据一示例性实施例示出的一种用于鉴权或赋权的基础模型示意图。
图2是根据一示例性实施例示出的一种资源组划分示例图。
图3是根据一示例性实施例示出的一种鉴权方法的流程图。
图4是根据一示例性实施例示出的一种鉴权方法的流程图。
图5是根据一示例性实施例示出的一种鉴权***缓存的更新流程图。
图6是根据一示例性实施例示出的一种鉴权装置的框图。
图7是根据一示例性实施例示出的一种电子设备的结构示意图。
图8是根据一示例性实施例示出的一种鉴权***的结构示意图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
本公开实施例提供了一种用于鉴权或赋权的基础模型,该基础模型中包括几种元素,分别为用户User(可以简称为U)、目标组以及资源Resource(可以简称为R),该基础模型中的任意多种元素之间均可以建立关联关系。在一种实施方式中,目标组可以是用户组Organization(可以简称为O),也可以是资源组Package(可以简称为P),还可以是用户组O和资源组P。在一种实施方式中,资源R可以是数据资源,也可以是权限资源,本公开实施对此不做具体限定。在一种实施方式中,用户组可以根据人员组织架构划分,资源组可以根据实际业务来划分,例如是根据业务场景、业务类型、业务范围来划分等。
以基础模型中包括用户U、用户组O、资源组P和资源R这四种元素为例,图1示出了该基础模型以及该基础模型中元素间的关联关系。示例性的,参照图1,用户U与用户组O可以建立关联关系,表明用户U归属于用户组O;用户U与资源R可以建立关联关系,表明用户U具备资源R的权限;用户组O与资源R可以建立关联关系,表明用户组O具备资源R的权限;资源组P与资源R可以建立关联关系,表明资源R归属与资源组P;用户U与资源组P可以建立关联关系,表明用户U具备资源组P包括的资源R的权限;用户组O与资源组P也可以建立关联关系,表明用户组O具备资源组P包括的资源R的权限。在一种实施方式中,元素之间是否建立了关联关系,可以通过元素标识之间是否存在关联关系来确定,具体可以通过元素标识之间是否存在正向关联来确定,其中,正向关联指示用户或用户组具备资源权限,或者,用户或用户组关联目标资源组,或者,用户与用户组存在归属关系,或者,资源与资源组存在归属关系。例如,用户U和资源R之间的正向关联指示用户U具备资源R的权限,用户U和资源组P之间的正向关联指示用户U关联资源组P,用户U和用户组O之间的正向关联指示用户U归属于用户组O,资源R与资源组P之间的正向关联指示资源R归属于资源组P。
在本公开实施例的一种实施方式中,可选的,当目标组包括目标子组时,用户标识和资源标识中的至少一个与目标子组标识之间是否存在关联关系,同用户标识和资源标识中的至少一个与目标组标识之间是否存在关联关系相互独立。
示例性的,当目标组为用户组,用户组包括用户子组时,“目标用户与用户组之间建立关联关系”同“目标用户与用户子组之间建立关联关系”相互独立,“目标资源与用户组之间建立关联关系”同“目标资源与用户子组之间建立关联关系”相互独立,“目标用户和目标资源与用户组之间建立关联关系”同“目标用户和目标资源与用户子组建立关联关系”相互独立。也即,用户组和用户子组之间有父子关系,没有继承关系。
例如,用户组A是用户组B的子组,用户组B具有目标资源的权限,用户组A不一定具有目标资源的权限。举个具体的例子来说明,假设用户组B为公司事业部,用户组A为公司事业部下的一个小组,公司事业部(即用户组B)具有最高级别的查看权限,这个小组(即用户组A)不一定具有最高级别的查看权限。
示例性的,当目标组为资源组,资源组包括资源子组时,“目标用户与资源子组之间建立关联关系”同相互“目标用户与资源组之间建立关联关系”独立,“目标资源与资源子组之间建立关联关系”同“目标资源与资源组之间建立关联关系”相互独立,“目标用户和目标资源与资源组之间建立关联关系”同“目标用户和目标资源与资源子组之间建立关联关系”相互独立。也即,资源组和资源子组之间有父子关系,没有继承关系。
例如,资源组A是资源组B的子组,资源组B中包括目标资源,资源组A中不一定具有目标资源。举个具体的例子来说明,假设资源组B为***菜单,资源组A为***菜单下的一个页面,***菜单(即资源组B)中包括删除权限,这个页面(即资源组A)中不一定具有删除权限。
如图2所示的资源组划分示例图,资源组P包括资源R1、资源R2和资源子组P’,资源子组P’包括资源R3和资源R4。假设,用户U或者用户组O与资源组P之间建立关联关系(也即用户U或者用户组O与资源组P之间存在正向关联),但并不能由此得出用户U或者用户组O与资源子组P’之间也建立关联关系(也即用户U或者用户组O与资源子组P’之间存在正向关联)。此处,用户U或者用户组O与资源组P之间的正向关联指示用户U或者用户组O关联资源组P。进而可以得出,用户U或者用户组O具有资源R1和资源R2的权限,不具有资源R3和资源R4的权限。
本公开实施例可以借助该基础模型(下述将该基础模型简称为UOPR模型)来实现资源鉴权,以用户组和/或资源组进行赋权,更加符合实际业务赋权需求,资源权限清晰且易维护。以UOPR模型包括用户U、用户组O、资源组P以及资源R这四种元素为例,四种元素间存在六种关联关系,任意两种元素间都可以是n对n的关联关系。举例说明,假设从用户U的角度出发,只要通过任意关联关系能关联到资源R,且用户U没有被拉黑,就可以鉴别出用户U具有资源R的权限。在一种实施方式中,拉黑功能可以具体可以通过元素标识之间是否存在负向关联来确定,其中,负向关联指示不具备资源权限(关于负向关联的详细解释将在后续内容中进行阐述)。
在本公开实施例的一种实施方式中,UOPR模型可以支持全局鉴权,也可以支持局部鉴权。
其中,全局鉴权指的是判断用户U是否具有资源R的权限。可选的,在判断用户U是否具有资源R的权限时,具体可以判断用户U和资源R之间是否建立了直接正向关联关系,也即判断是否存在U-R正向关联(用户U和资源R之间的正向关联),具体还可以判断用户U和资源R之间是否建立了间接关联关系,也即判断是否存在U-P-R正向关联(用户U和资源组P与资源R之间的正向关联)或者U-O-R正向关联(用户U和用户组O与资源R之间的正向关联)或者U-O-P-R正向关联(用户U、用户组O和资源组P与资源R之间的正向关联)。也就是,在不存在负向关联的情况下,通过U-R正向关联、U-P-R正向关联、U-O-R正向关联以及U-O-P-R正向关联中的任意一个正向关联均可判断出用户U具有资源R的权限。
局部鉴权,指的是判断用户U在目标组下是否具有资源R的权限。其中,U-P-R局部鉴权指的是判断用户U在资源组P下是否具有资源R的权限,举个具体的例子来说明,当资源组P为某个操作页面、资源R为删除权限时,U-P-R局部鉴权即为判断用户U在这个操作页面中是否具有删除权限。U-O-R局部鉴权指的是判断用户U在用户组O下是否具有资源R的权限,举个具体的例子来说明,当用户组O为某个管理团队、资源R为机密资料时,U-O-R局部鉴权即为判断用户U在这个管理团队下是否具有获取机密资料的权限。
示例性的,在进行U-P-R局部鉴权时,也即判断用户U在资源组P下是否具有资源R的权限时,如果资源组P包括资源R,则具体可以判断用户U和资源R之间是否建立了直接正向关联关系,也即判断是否存在U-R正向关联,具体还可以判断用户U和资源组P与资源R之间是否建立了正向关联,也即判断是否存在U-P-R正向关联(用户U和资源组P与资源R之间的正向关联)或者U-P’-R正向关联(用户U和资源组P’与资源R之间的正向关联)或者U-O-P-R正向关联(用户U、用户组O和资源组P与资源R之间的正向关联)或者U-O-P’-R正向关联(用户U、用户组O和资源组P’与资源R之间的正向关联)。其中,资源组P’等于资源组P,或者是资源组P’是资源组P的子资源组。也就是,在不存在负向关联、资源组P包括资源R的情况下,通过U-R正向关联、U-P-R正向关联、U-P’-R正向关联、U-O-P-R正向关联以及U-O-P’-R正向关联中的任意一个正向关联均可判断出用户U在资源组P下具有资源R的权限。
以资源组P’是资源组P的资源子组为例进行解释说明,假设资源组P为***菜单,资源组P’为***菜单下的一个页面,资源R为删除权限,如果用户U在这个页面(资源组P’)下具有删除权限,则用户U在这个***菜单(资源组P)下也具有删除权限。反之并不成立(由于资源子组对资源组的关联关系没有继承),也即用户U在这个***菜单(资源组P)下具有删除权限,无法得到用户U在这个页面(资源组P’)下也具有删除权限,其中一种情况是资源组P’中根本就不包括删除权限(资源R)。
其中,可以将正向关联划分为全局正向关联和局部正向关联,全局正向关联包括U-R正向关联、O-R正向关联,局部正向关联包括U-P正向关联、U-O正向关联、O-P正向关联、P-R正向关联、U-P-R正向关联、U-O-R正向关联、O-P-R正向关联和U-O-P-R正向关联。示例性的,U-P-R正向关联可以由U-P正向关联和P-R正向关联确定,U-O-R正向关联可以由U-O正向关联和O-R正向关联确定,等等。
在本公开实施例的一种实施方式中,在UOPR模型支持正向关联的基础上,UOPR模型还支持负向关联。举个例子,U-R负向关联指示用户U没有资源R的权限,也即用户U对资源R的权限被拉黑。
在一种具体应用场景下,假设用户组O1与资源组P1关联,资源组P1中包括10个资源R(其中一个是重要资源R1)。当用户组O1中加入新用户时,例如加入了实习生U1,如果不想让实习生U1具有重要资源R1的权限,则可以设置实习生U1和重要资源R1的负向关联,实习生U1对资源R1的权限被拉黑。此时,存在实习生U1-用户组O1正向关联、用户组O1-资源组P1正向关联以及实习生U1-资源R1负向关联,实习生U1可以具有资源组P1中除重要资源R1之外的其余九个资源的权限。
这样设置的好处在于,无需对资源组P1进行拆分,给实习生U1单独创建单独的资源组P2(只包括资源组P1中除重要资源R1之外的其余九个资源的权限)。进而,本实施方式能够适用于各种特例情况,实现了精细化赋权,提高了权限管理的灵活度,降低了权限管理的维护成本,克服了相关技术中角色数量过多的问题。
在本公开实施例的一种实施方式中,负向关联可以分为全局负向关联和局部负向关联。其中,全局负向关联指示用户在全局都不具备相应的资源权限,用于实现全局权限拉黑功能;局部负向关联指示用户在局部(在目标用户组或者在目标资源组中)不具备相应的资源权限,用于实现局部权限拉黑功能。
示例性的,全局负向关联可以包括U-R负向关联(用户U与资源R之间的负向关联)和O-R负向关联(用户组O与资源R之间的负向关联)。假设,资源R归属于多个资源组P,U-R负向关联指示用户U在每个资源组P下都没有资源R的权限,O-R负向关联指示用户组O在每个资源组P下都没有资源R的权限。
示例性的,局部负向关联可以包括U-P-R负向关联(用户U和资源组P与资源R之间的负向关联)和O-P-R负向关联(用户组O和资源组P与资源R之间的负向关联)。假设,资源R归属于资源组P1和资源组P2,若存在U-R正向关联以及U-P1-R负向关联,则指示用户U具有资源R的权限(全局鉴权),用户U在资源组P1下不具有资源R的权限(局部鉴权),用户U在资源组P2下具有资源R的权限(局部鉴权);若存在O-R正向关联以及O-P1-R负向关联,则指示用户组O具有资源R的权限(全局鉴权),用户组O在资源组P1下不具有资源R的权限(局部鉴权),用户组O在资源组P2下具有资源R的权限(局部鉴权)。
在本公开实施例的一种实施方式中,可选的,在基于UOPR模型进行鉴权时,负向关联的优先等级高于正向关联的优先等级。
例如,若资源R归属于资源组P(也即存在P-R正向关联),且存在U-P正向关联和U-P-R负向关联,则用户U不具有资源R的权限(全局鉴权),用户U在资源组P下也不具有资源R的权限(局部鉴权);再例如,若资源R归属于资源组P,且存在U-P正向关联和U-R负向关联,则用户U不具有资源R的权限(全局鉴权),用户U在资源组P下也不具有资源R的权限(局部鉴权)。
例如,若资源R归属于资源组P,且存在O-P正向关联和O-P-R负向关联,则用户组O不具有资源R的权限(全局鉴权),用户组O在资源组P下也不具有资源R的权限(局部鉴权);再例如,若资源R归属于资源组P,且存在O-P正向关联和O-R负向关联,则用户组O不具有资源R的权限(全局鉴权),用户组O在资源组P下也不具有资源R的权限(局部鉴权)。
在本公开实施例的一种实施方式中,可选的,在基于UOPR模型进行鉴权时,全局关联(包括全局正向关联和全局负向关联)的优先等级高于局部关联(包括局部正向关联和局部负向关联)的优先等级。
例如,若资源R归属于资源组P,且存在U-R正向关联,不存在U-P正向关联时,则可以得出用户U具有资源R的权限,同时,由于“存在U-R正向关联”的优先等级高于“不存在U-P正向关联”的优先等级,还可以得出用户U在资源组P下也具有资源R的权限。
在本公开实施例的一种实施方式中,在基于UOPR模型进行鉴权时,在满足负向关联的优先等级高于正向关联的优先等级的前提下,全局关联(包括全局正向关联和全局负向关联)的优先等级高于局部关联(包括局部正向关联和局部负向关联)的优先等级。
例如,若资源R归属于资源组P,且存在U-R正向关联以及U-P-R负向关联时,则可以得出用户U具有资源R的权限。同时,由于全局关联“U-R正向关联”的优先等级高于局部关联“U-P-R负向关联”的优先等级,可以得到用户U具有资源R的权限。同时,由于全局正向关联“U-R正向关联”可以推出局部正向关联“U-P-R正向关联”,以及负向关联“U-P-R负向关联”的优先等级高于正向关联“U-P-R正向关联”的优先等级,可以得出用户U在资源组P下不具有资源R的权限。
在本公开实施例的一种实施方式中,在基于UOPR模型进行鉴权时,用户U级别关联的优先等级高于用户组O级别关联的优先等级。其中,用户U级别关联例如为U-R正向关联、U-R负向关联等,用户组O级别关联例如为O-R正向关联、O-R负向关联等。
例如,若用户U归属于用户组O,且存在U-R正向关联以及O-R负向关联时,由于用户U级别关联“U-R正向关联”的优先等级高于用户组O级别关联“O-R负向关联”的优先等级,可以得出用户U具有资源R的权限。
在本公开实施例的一种实施方式中,在基于UOPR模型进行鉴权时,若存在与资源R对应的正向关联且不存在与资源R对应的负向关联,则默认用户U和/或用户组O具有资源R的权限。
例如,若资源R归属于资源组P,且存在U-P正向关联,不存在任意负向关联,则用户U具有资源R的权限;再例如,若资源R归属于资源组P,用户U归属于用户组O(也即存在U-O正向关联),且存在O-P正向关联,不存在任意负向关联,则用户U具有资源R的权限,用户组O具有资源R的权限。
图3是根据一示例性实施例示出的一种鉴权方法的流程图,如图3所示,该鉴权方法用于电子设备中,由配置于电子设备中的鉴权装置来执行,包括以下步骤:
在步骤S110中,接收目标鉴权请求,目标鉴权请求中的请求参数包括用户标识、目标组标识和资源标识,目标组标识包括资源组标识和用户组标识中的至少一个。
目标鉴权请求,指的是意在询问是否具有相关资源权限的请求,其可以是全局鉴权请求,用于请求鉴别目标用户是否全局具备目标资源权限,其还可以是局部鉴权请求,用于请求鉴别目标用户是否在目标资源组中或在目标用户组中局部具备目标资源权限。
其中,目标组可以是资源组P,资源组P例如可以为某页面、某***菜单等,目标组也可以是用户组O,用户组O例如可以为某机构、某部门等,目标组还可以是用户组O与资源组P的组合。
目标鉴权请求中的鉴权参数包括用户标识、目标组标识和资源标识。与目标组对应的,目标组标识可以是资源组标识,也可以是用户组标识,还可以是资源组标识和用户组标识的组合。
其中,用户标识可以是用于唯一标识用户的ID(Identity,身份标识);资源组标识可以是用于唯一标识资源组的ID;用户组标识可以是用于唯一标识用户组的ID;资源标识可以是具有业务含义的标识,也可以是URL(Uniform Resource Locator,统一资源定位符),以字符串的形式存在,且每个字符串在相关业务中是全局唯一的。
当目标组标识的值为非真值时,也即根据目标组标识可以查询不到匹配的目标组,则目标鉴权请求为全局鉴权请求,意在询问该用户是否具有与资源标识对应的资源权限,相应的,与该目标鉴权请求对应的鉴权结果用于指示用户是否具有与资源标识对应的资源权限。其中,若要进行全局鉴权,也即进行U-R全局鉴权,需将目标鉴权请求中目标组标识设置为非真值,例如可以是空值(也即目标鉴权请求中的鉴权参数只包括用户标识和资源标识),也可以是非法值,还可以是零值(如目标组标识的有效值均大于零),本实施方式对此不做具体限定。
当目标组标识的值为真值时,也即根据目标组标识可以查询到匹配的目标组,则目标鉴权请求为局部鉴权请求,意在询问该用户在目标组下是否具有与资源标识对应的资源权限,相应的,与该目标鉴权请求对应的鉴权结果用于指示用户在目标组下是否具有与资源标识对应的资源权限。其中,若要进行局部鉴权,需将目标鉴权请求中目标组标识设置为真值,也即合法值或有效值。
示例性的,当目标组标识为用户组标识OrgID且OrgID为真值时,目标鉴权请求意在询问与用户标识UserID对应的用户在与OrgID对应的用户组下是否具有与资源标识Res对应的资源权限,也即进行U-O-R局部鉴权。
示例性的,当目标组标识为资源组标识PkgID且PkgID为真值时,目标鉴权请求意在询问与用户标识UserID对应的用户在与PkgID对应的资源组下是否具有与资源标识Res对应的资源权限,也即进行U-P-R局部鉴权。
示例性的,当目标组标识为用户组标识OrgID和资源组标识PkgID,且OrgID和PkgID均为真值时,目标鉴权请求意在询问与用户标识UserID对应的用户在与OrgID对应的用户组下以及在与PkgID对应的资源组下是否具有与资源标识Res对应的资源权限,也即进行U-O-P-R局部鉴权。
在步骤S120中,查询请求参数之间是否存在关联关系;所述关联关系的类型包括用户标识、目标组标识与资源标识中至少两个之间的正向关联,用户标识与资源标识之间的负向关联,以及用户标识、目标组标识与资源标识之间的负向关联。
其中,请求参数之间的关联关系,可以分为正向关联和负向关联。
所述正向关联用于指示目标用户或目标用户组具备资源权限,或者目标用户或目标用户组关联目标资源组,或者目标用户与目标用户组存在归属关系,或者目标资源与目标资源组存在归属关系;所述负向关联用于指示目标用户全局不具备目标资源权限,或者目标用户在目标用户组中或在目标资源组中局部不具备目标资源权限。其中,所述目标用户为与用户标识对应的用户,所述目标用户组为与用户组标识对应的用户组,所述目标资源组为与资源组标识对应的资源组,所述目标资源为与资源标识对应的资源。
当目标组标识包括资源组标识PkgID时,请求参数之间的关联关系至少包括:用户标识UserID与资源标识Res之间的正向关联(即U-R正向关联)、用户标识UserID与资源组标识PkgID之间的正向关联(即U-P正向关联)、资源组标识PkgID与资源标识Res之间的正向关联(即P-R正向关联),以及用户标识UserID和资源组标识PkgID与资源标识Res之间的正向关联(即U-P-R正向关联)。
当目标组标识包括用户组标识OrgID时,请求参数之间的关联关系至少包括:用户标识UserID与资源标识Res之间的正向关联(即U-R正向关联)、用户标识UserID与用户组标识OrgID之间的正向关联(即U-O正向关联)、用户组标识OrgID与资源标识Res之间的正向关联(即O-R正向关联),以及用户标识UserID和用户组标识OrgID与资源标识Res之间的正向关联(即U-O-R正向关联)。
当目标组标识包括资源组标识PkgID和用户组标识OrgID时,请求参数之间的关联关系还至少包括:用户组标识OrgID和资源组标识PkgID之间的正向关联(即O-P正向关联)、用户组标识OrgID和资源组标识PkgID与资源标识Res之间的正向关联(即O-P-R正向关联),以及用户标识UserID、用户组标识OrgID和资源组标识PkgID与资源标识Res之间的正向关联(即U-O-P-R正向关联)。
示例性的,用户标识UserID与资源标识Res之间的正向关联,指示与用户标识UserID对应的用户具备与资源标识Res对应的资源权限;用户标识UserID与资源组标识PkgID之间的正向关联,指示与用户标识UserID对应的用户和与资源组标识PkgID对应的资源组存在关联关系;用户标识UserID与用户组标识OrgID之间的正向关联,指示与用户标识UserID对应的用户和与用户组标识OrgID对应的用户组存在归属关系;用户组标识OrgID与资源标识Res之间的正向关联,指示与用户组标识OrgID对应的用户组具备与资源标识Res对应的资源权限;用户组标识OrgID和资源组标识PkgID之间的正向关联,指示与用户组标识OrgID对应的用户组和与资源组标识PkgID对应的资源组存在关联关系;资源组标识PkgID与资源标识Res之间的正向关联,指示与资源标识Res对应的资源和与资源组标识PkgID对应的资源组存在归属关系。
当目标组标识包括资源组标识PkgID时,请求参数之间的关联关系至少还包括:用户标识UserID与资源标识Res之间的负向关联(即U-R负向关联)、用户标识UserID和资源组标识PkgID与资源标识Res之间的负向关联(即U-P-R负向关联)。
当目标组标识包括用户组标识OrgID时,请求参数之间的关联关系至少还包括:用户组标识OrgID与资源标识Res之间的负向关联(即O-R负向关联)。
当目标组标识包括资源组标识PkgID和用户组标识OrgID时,请求参数之间的关联关系还至少包括:用户组标识OrgID和资源组标识PkgID与资源标识Res之间的负向关联(即O-P-R负向关联)。
示例性的,负向关联可以分为全局负向关联和局部负向关联。
全局负向关联,包括用户标识UserID与资源标识Res之间的负向关联,以及用户组标识OrgID与资源标识Res之间的负向关联,指示在全局都不具备相应的资源权限,用于实现全局权限拉黑功能;局部负向关联,包括用户标识UserID和资源组标识PkgID与资源标识Res之间的负向关联,以及用户组标识OrgID和资源组标识PkgID与资源标识Res之间的负向关联,指示在局部不具备相应的资源权限,用于实现局部权限拉黑功能。
在本公开实施例的一种实施方式中,当目标组包括目标子组时,所述用户标识和所述资源标识中的至少一个与所述目标子组标识之间是否存在关联关系,同所述用户标识和所述资源标识中的至少一个与所述目标组标识之间是否存在关联关系相互独立。
以目标组为资源组为例,当资源组包括资源子组时,假设资源组为P(资源组标识为PkgID_a),其资源子组为P’(资源子组标识为PkgID_b),用户标识UserID与资源子组标识PkgID_b之间(U-P’)是否存在关联关系,同用户标识UserID与资源组标识PkgID_a之间(U-P)是否存在关联关系是相互独立的,也即用户标识UserID与资源子组标识PkgID_b之间是否存在关联关系,无法通过“用户标识UserID与资源组标识PkgID_a之间存在关联关系”确定。类似的,资源子组标识PkgID_b与资源标识Res之间(P’-R)是否存在关联关系,同资源组标识PkgID_a与资源标识Res之间(P-R)是否存在关联关系也是相互独立的,也即,资源子组标识PkgID_b与资源标识Res之间是否存在关联关系,无法通过“资源组标识PkgID_a与资源标识Res之间存在关联关系”确定。类似的,用户标识UserID和资源子组标识PkgID_b与资源标识Res之间(U-P’-R)是否存在关联关系,同用户标识UserID和资源组标识PkgID_a与资源标识Res之间(U-P-R)是否存在关联关系是相互独立的,也即,用户标识UserID和资源子组标识PkgID_b与资源标识Res之间是否存在关联关系,无法通过“用户标识UserID和资源组标识PkgID_a与资源标识Res之间存在关联关系”确定。
进一步的,用户标识和资源标识中的至少一个与目标子组标识之间的正向关联,用于确定用户标识和资源标识中的至少一个与目标组标识之间存在正向关联。
接续前例,通过用户标识serID与资源组标识PkgID_b之间的正向关联(即U-P’正向关联),可以推出用户标识UserID与资源组标识PkgID_a之间也存在正向关联(即U-P正向关联);通过资源组标识PkgID_b与资源标识Res之间存在正向关联(即P’-R正向关联),可以推出资源组标识PkgID_a与资源标识Res之间也存在正向关联(即P-R正向关联);通过用户标识UserID和资源组标识PkgID_b与资源标识Res之间存在正向关联(即U-P’-R正向关联),可以推出用户标识UserID和资源组标识PkgID_a与资源标识Res之间也存在正向关联(即U-P-R正向关联)。
在步骤S130中,基于预设的鉴权判定规则,根据查询结果确定与目标鉴权请求对应的鉴权结果。
下述以目标鉴权请求的鉴权参数包括用户标识UserID,用户组标识OrgID和/或资源组标识PkgID,以及资源标识Res为例进行解释说明,其中,用户组标识OrgID可以是真值,也可以是非真值;资源组标识PkgID可以是真值,也可以是非真值。
在本公开实施例的一种实施方式中,如果查询到用户标识UserID与资源标识Res之间的负向关联(即U-R全局负向关联),则确定与目标鉴权请求对应的鉴权结果为无权限。在此情况下,无论是全局鉴权(用户组标识OrgID和资源组标识PkgID均为非真值),还是局部鉴权(用户组标识OrgID和资源组标识PkgID中至少之一为真值),得到的鉴权结果均是无权限。
在本公开实施例的一种实施方式中,如果查询到用户标识UserID与资源组标识PkgID之间的正向关联(即U-P正向关联),以及用户标识UserID和资源组标识PkgID与资源标识Res之间的负向关联(即U-P-R负向关联),则确定与目标鉴权请求对应的鉴权结果为无权限。在此种情况下,资源组标识PkgID为真值,故此时为U-P-R局部鉴权,鉴权结果为与用户标识UserID对应的用户在与资源组标识PkgID对应的资源组下没有与资源标识Res对应的资源权限。
在本公开实施例的一种实施方式中,如果查询到用户标识UserID与用户组标识OrgID之间的正向关联(即U-O正向关联),以及用户标识UserID和用户组标识OrgID与资源标识Res之间的负向关联(即U-O-R负向关联),则确定与目标鉴权请求对应的鉴权结果为无权限。在此种情况下,用户组标识OrgID为真值,故此时为U-O-R局部鉴权,鉴权结果为与用户标识UserID对应的用户在与用户组标识OrgID对应的用户组下没有与资源标识Res对应的资源权限。
在本公开实施例的一种实施方式中,如果查询到用户标识UserID与资源标识Res之间的正向关联(U-R正向关联)、资源组标识PkgID与资源标识Res之间的正向关联(P-R正向关联),以及用户标识UserID和资源组标识PkgID与资源标识Res之间的负向关联(U-P-R负向关联),则确定与目标鉴权请求对应的鉴权结果为无权限。在此种情况下,资源组标识PkgID为真值,故此时为U-P-R局部鉴权,鉴权结果为与用户标识UserID对应的用户在与资源组标识PkgID对应的资源组下没有与资源标识Res对应的资源权限。
在本公开实施例的一种实施方式中,如果查询到用户标识UserID与用户组标识OrgID之间的正向关联(U-O正向关联)、用户组标识OrgID与资源标识Res之间的正向关联(O-R正向关联),以及用户标识UserID和用户组标识OrgID与资源标识Res之间的负向关联(U-O-R负向关联),则确定与目标鉴权请求对应的鉴权结果为无权限。在此种情况下,用户组标识OrgID为真值,故此时为U-O-R局部鉴权,鉴权结果为与用户标识UserID对应的用户在与用户组标识OrgID对应的用户组下没有与资源标识Res对应的资源权限。
上述五种实施方式中,在根据查询结果确定与目标鉴权请求对应的鉴权结果时,主要是依据UOPR模型中“负向关联的优先等级高于正向关联的优先等级”。当然,上述几种实施方式仅为示例性列举,并非是对“目标鉴权请求中的请求参数之间存在的关联关系”的查询结果的限定。
在本公开实施例的一种实施方式中,如果查询到用户标识UserID与资源标识Res之间的正向关联(即U-R正向关联),未查询用户标识UserID与资源组标识PkgID之间的正向关联(即U-P正向关联)、用户标识UserID与用户组标识OrgID之间的正向关联(即U-O正向关联),以及未查询到任何负向关联,则确定与目标鉴权请求对应的鉴权结果为有权限。在此种情况下,若用户组标识OrgID为非真值,资源组标识PkgID为非真值,则此时为U-R全局鉴权,鉴权结果为与用户标识UserID对应的用户具有与资源标识Res对应的资源权限。在此种情况下,若用户组标识OrgID为非真值,资源组标识PkgID为真值,且存在资源组标识PkgID与资源标识Res的正向关联(即P-R正向关联),则此时为U-P-R局部鉴权,鉴权结果为与用户标识UserID对应的用户在与资源组标识PkgID对应的资源组下具有与资源标识Res对应的资源权限。在此种情况下,若用户组标识OrgID为真值,资源组标识PkgID为非真值,且存在用户标识UserID与用户组标识OrgID的正向关联(即U-O正向关联),则此时为U-O-R局部鉴权,鉴权结果为与用户标识UserID对应的用户在与用户组标识OrgID对应的用户组下具有与资源标识Res对应的资源权限。
此种实施方式中,在根据查询结果确定与目标鉴权请求对应的鉴权结果时,主要是依据UOPR模型中“全局关联(包括全局正向关联和全局负向关联)的优先等级高于局部关联(包括局部正向关联和局部负向关联)的优先等级”。当然,此种实施方式仅为示例性列举,并非是对“目标鉴权请求中的请求参数之间存在的关联关系”的查询结果的限定。
在本公开实施例的一种实施方式中,如果查询到资源组标识PkgID与资源标识Res之间的正向关联(即P-R正向关联)以及用户标识UserID与资源组标识PkgID之间的正向关联(即U-P正向关联),未查询到任何负向关联,则确定与目标鉴权请求对应的鉴权结果为有权限。在此种情况下,资源组标识PkgID为真值,故此时为U-P-R局部鉴权,鉴权结果为与用户标识UserID对应的用户在与资源组标识PkgID对应的资源组下具有与资源标识Res对应的资源权限。
在本公开实施例的一种实施方式中,如果查询到资源组标识PkgID与资源标识Res之间的正向关联(即P-R正向关联)、用户标识UserID与用户组标识OrgID之间的正向关联(即U-O正向关联),以及用户组标识OrgID与资源组标识PkgID之间的正向关联(即O-P正向关联),未查询到任何负向关联,则确定与目标鉴权请求对应的鉴权结果为有权限。在此种情况下,资源组标识PkgID为真值,用户组标识OrgID为真值,故此时为U-O-P-R局部鉴权,鉴权结果为与用户标识UserID对应的用户在与用户组标识OrgID对应的用户组下、在与资源组标识PkgID对应的资源组下具有与资源标识Res对应的资源权限。
上述两种实施方式中,在根据查询结果确定与目标鉴权请求对应的鉴权结果时,主要是依据UOPR模型中“若存在与资源R对应的正向关联且不存在与资源R对应的负向关联,则默认用户U和/或用户组O具有资源R的权限”。当然,上述两种实施方式仅为示例性列举,并非是对“目标鉴权请求中的请求参数之间存在的关联关系”的查询结果的限定。
在上述实施方式的基础上,如果查询到用户标识UserID与用户组标识OrgID之间的正向关联(即U-O正向关联)、用户标识UserID与资源标识Res之间的正向关联(即U-R正向关联),以及用户组标识OrgID与资源标识Res之间的负向关联(即O-R负向关联)或者用户组标识OrgID和资源组标识PkgID与资源标识Res之间的负向关联(O-P-R负向关联),则确定与用户标识UserID对应的目标用户具备与资源标识Res对应的目标资源权限。
此实施方式中,在根据查询结果确定与目标鉴权请求对应的鉴权结果时,主要是依据UOPR模型中“用户U级别关联的优先等级高于用户组O级别关联的优先等级”,进而在实际应用中可以首先查询用户级别关联,再查询用户组级别关联,以减少鉴权流程。
在上述技术方案中,基于本公开实施例提供的UOPR模型来实现赋权或鉴权,提高了权限管理的灵活度和精细化度,降低了权限管理的维护成本,同时也提高了权限管理的可扩展性,使其适用于绝大多数的鉴权场景。
图4是根据一示例性实施例示出的一种鉴权方法的流程图。在上述技术方案的基础上,本实施例提供了一种具体的实施方式,其中,在本示例性实施例中,目标鉴权请求中包括的鉴权参数包括:用户标识UserID、资源组标识PkgID以及资源标识Res。可选的,PkgID=0表示请求判断与用户标识UserID对应的用户是否具有与资源标识Res对应的资源权限(即全局鉴权,U-R全局鉴权),PkgID>0表示请求判断与用户标识UserID对应用户在与资源组标识PkgID对应的资源组下是否具有与资源标识Res对应的资源权限(即局部鉴权,U-P-R局部鉴权)。为了便于描述,将用户标识UserID对应的用户简称为UserID,与资源标识Res对应的资源简称为Res,与资源组标识PkgID对应的资源组简称为PkgID。
在本公开实施例的一种实施方式中,如图4所示,客户端将目标鉴权请求发送至服务器,服务器接收到目标鉴权请求之后,查询目标鉴权请求的请求参数之间是否存在关联关系,并基于预设的鉴权判定规则,根据查询结果确定与目标鉴权请求对应的鉴权结果,将该鉴权结果反馈给客户端,客户端接收与目标鉴权请求对应的鉴权结果。
在本公开实施例的一种实施方式中,如图4所示,服务器在接收到目标鉴权请求之后,可以首先根据用户标识UserID确定该用户是否为超级用户,若是,则直接确定鉴权结果为有权限,若否,则执行“通过查询到的目标鉴权请求的请求参数之间的关联关系确定鉴权结果”的操作。
在本公开实施例的一种实施方式中,如图4所示,“通过查询到的目标鉴权请求的请求参数之间的关联关系确定鉴权结果”的流程包括如下步骤:
S201、确定Res的有效性。
在此步骤中,若Res无效,则流程结束,同时可以执行报错操作。
S202、查询P-R正向关联获取PkgID0。
其中,PkgID0是Res所归属的资源组集合。
S203、判断PkgID是否等于0,若否,则执行S204,若是,则执行S205。
S204、根据PkgID0对PkgID进行过滤,执行S205。
在此步骤中,判断PkgID0是否为PkgID的资源子组,并对PkgID进行过滤,得到过滤后的PkgID,记为资源组集合PkgID1。其中,资源组集合PkgID1即为PkgID和PkgIDO的交集。同时,将P.size()记为资源组集合PkgID1中包括的资源组数量。
在此步骤中,PkgID不等于0,为局部鉴权,资源组集合PkgID1中的资源组即为PkgID的资源子组,进而可以通过U-PkgID1中的资源组-R正向关联,确定存在U-PkgID-R正向关联。
S205、查询U-R负向关联。
S206、判断是否存在UserID-Res负向关联,若是,则执行S207,若否,则执行S208。
在此步骤中,PkgID等于0,为全部鉴权,由于负向关联的优先级最高,则首先判断是否存在UserID-Res负向关联(此负向关联为用户级别负向关联,且为全局负向关联)。
S207、确定鉴权结果为无权限。
S208、判断P.size()是否大于0,若否,则执行S209,若是,则执行S211。
S209、判断是否PkgID大于0且P.size()是否等于0,若是,则执行S210,若否,则执行S214。
S210、确定鉴权结果为无权限。
此时,PkgID大于0,为U-P-R局部鉴权,同时,P.size()等于0,即过滤后的PkgID为空资源组,PkgID和Res无关联,进而,U-P-R局部鉴权结果为无权限。
S211、查询U-P-R负向关联。
S212、判断是否存在UserID-PkgID1中的资源组-Res负向关联,若是,则执行S213,若否,则执行S209。
S213、根据UserID-PkgID1中的资源组-Res负向关联继续对PkgID进行过滤,执行S209。
在此步骤中,根据UserID-PkgID1中的资源组-Res负向关联对PkgID1继续过滤,得到资源组集合PkgID2。同时,将P.size()更新为资源组集合PkgID2中包括的资源组数量。
S214、查询U-R正向关联。
S215、判断是否存在UserID-Res正向关联,若是,则执行S216,若否,则执行S217。
S216、确定鉴权结果为有权限。
此时,PkgID大于0,为U-P-R局部鉴权,PkgID和Res有关联(也即存在归属关系),同时由于存在U-R正向关联,得出U-P-R局部鉴权结果为有权限。
S217、查询U-P正向关联。
S218、判断是否存在UserID-PkgID2中的资源组的正向关联,若是,则执行S219,若否,则执行S220。
S219、确定鉴权结果为有权限。
此时,PkgID大于0,为U-P-R局部鉴权,PkgID和Res有关联,同时由存在“UserID-PkgID2中的资源组的正向关联”推出存在“UserID-PkgID正向关联”,进而得出U-P-R局部鉴权结果为有权限。
S220、查询U-O正向关联。
S221、判断是否存在UserID-O正向关联,若否,则执行S222,若是,则执行S223。
在一种示例中,若鉴权参数还包括用户组标识OrgID,则可以直接根据UserID-OrgID正向关联。
由于用户和用户组存在的归属关系,在另一种示例中,还可以只根据UserID去查询查询U-O正向关联。
S222、确定鉴权结果为无权限。
此时,PkgID大于0,为U-P-R局部鉴权,PkgID和Res有关联,但由于不存在其他正向关联,则得出U-P-R局部鉴权结果为无权限。
S223、查询O-R负向关联。
若存在UserID-O正向关联,则可以获取到用户组标识OrgID。
S224、判断是否存在OrgID-Res负向关联,若是,则执行S225,若否,则执行S226。
S225、确定鉴权结果为无权限。
此时,PkgID大于0,为U-P-R局部鉴权,PkgID和Res有关联,同时存在UserID-OrgID正向关联和OrgID-Res负向关联,则得出U-P-R局部鉴权结果为无权限。
S226、判断P.size()是否大于0,若是,则执行S227,若否,则执行S229。
此时,P.size()依旧是资源组集合PkgID2中包括的资源组数量。
S227、查询O-P-R负向关联。
S228、判断是否存在OrgID-PkgID2中的资源组-Res负向关联,若否,则执行S229,若是,则执行S230。
S229、判断是否PkgID大于0且P.size()是否等于0,若是,则执行S231,若否,则执行S232。
S230、根据OrgID-PkgID2中的资源组-Res负向关联继续对PkgID进行过滤,执行S229。
在此步骤中,根据OrgID-PkgID2中的资源组-Res负向关联对PkgID2继续过滤,得到资源组集合PkgID3。同时,将P.size()更新为资源组集合PkgID3中包括的资源组数量。
S231、确定鉴权结果为无权限。
此时,PkgID大于0,为U-P-R局部鉴权,同时,P.size()等于0,即过滤后的PkgID为空资源组,PkgID和Res无关联,进而,U-P-R局部鉴权结果为无权限。
S232、查询O-R正向关联。
S233、判断是否存在OrgID-Res正向关联,若是,则执行S234,若否,则执行S235。
S234、确定鉴权结果为有权限。
此时,PkgID大于0,为U-P-R局部鉴权,PkgID和Res有关联,同时由于存在UserID-OrgID正向关联以及OrgID-Res正向关联,进而可以得出U-P-R局部鉴权结果为有权限。
S235、查询O-P正向关联。
S236、判断是否存在OrgID-PkgID正向关联,若是,则执行S237,若否,则执行S238。
S237、确定鉴权结果为有权限。
此时,PkgID大于0,为U-P-R局部鉴权,PkgID和Res有关联,同时由于存在UserID-OrgID正向关联以及OrgID-PkgID正向关联,进而可以得出U-P-R局部鉴权结果为有权限。
S238、确定鉴权结果为无权限。
此时,PkgID大于0,为U-P-R局部鉴权,PkgID和Res有关联,同时只存在UserID-OrgID正向关联,UserID无法关联到Res,进而可以得出U-P-R局部鉴权结果为无权限。
值得指出的是,图4所示的鉴权流程是一个较为完整的鉴权流程。在针对具体的业务场景下,可能并不需要执行图4所示的全部流程。例如,在一些业务场景中并不需要建立负向关联,或者在一些业务场景中用户或用户组只可以与资源组建立关联关系。进而,在一种实施方式中,可以在如图4所示的鉴权流程中配置“流程执行开关”,用于控制是否执行与“流程执行开关”相关的鉴权流程步骤。关于“流程执行开关”的配置,本实施方式不做具体限定,能够适用于相应的业务场景即可。
在上述技术方案的基础上,在本公开实施例提供的一种实施方式中,每一种关联关系都可以单独存储,进而在与每一种关联关系分别对应的数据存储区域中查询匹配的关联关系。示例性的,在与U-R正向关联对应的数据区域中去查询U-R正向关联,在与U-R负向关联对应的数据区域中去查询U-R负向关联,等等。
在上述技术方案的基础上,在本公开实施例提供的一种实施方式中,为了提高鉴权方法的执行速度,降低数据库的访问压力,还可以基于预先设计的鉴权***缓存去实现关联关系(包括正向关联和负向关联)的查询。示例性的,在鉴权***缓存中包括两类缓存,一种是本地缓存,一种是远程字典服务(redis)缓存。
在本公开实施例提供的一种实施方式中,查询所述请求参数之间是否存在关联关系步骤,可以具体为:逐级在本地缓存(localCache)、redis缓存以及数据库中查询查询所述请求参数之间是否存在关联关系。
其中,在查询与目标鉴权请求关联的任意一种关联关系时,均可以逐级在本地缓存、redis缓存以及数据库中进行查询。具体的,在查询任意一种关联关系时,首先在本地缓存中进行查询,若在本地缓存中查询不到,则在redis缓存中继续查询,若在redis缓存中也查询不到,则继续在数据库中查询。若在数据库中依然查询不到,则可以将此次查询记录在本地缓存中预设的空函数中,空函数例如可以是Optional.empty()。示例性的,本地缓存中预设的空函数中存储有通过三级查询依然查询不到的鉴权参数记录。
值得指出的是,此处提到的“查询不到”指的是既查询不到与鉴权参数对应的正向关联,也查询不到与鉴权参数对应的负向关联,还无法确定鉴权参数之间不存在关联关系。
示例性的,在查询任意一种关联关系时,向本地缓存中发送对应的查询请求,若在本地缓存中查询不到,则向redis缓存中发送对应的查询请求。若在redis缓存中可以查询到,则将查询结果回写至本地缓存中,若在redis缓存中也查询不到,则向数据库中发送对应的查询请求。若在数据库中可以查询到,则将查询结果回写至redis缓存中,并继续回写至本地缓存中,若在数据库中依然查询不到,则可以将此次查询不到的鉴权参数记录回写至本地缓存中的Optional.empty()中。
在本公开实施例提供的一种实施方式中,本地缓存根据所述数据库的操作日志定时更新。图5示出了一种鉴权***缓存的更新流程图,数据库的操作日志可以触发本地缓存以及redis缓存的数据更新。
在一示例中,本地缓存中的数据存在过期时间,例如为8个小时。
其中,可以设置一个更新任务,当更新任务检测到数据库日志更新后,则触发redis缓存将其对应的缓存数据进行清除。同时,为了触发本地缓存中的数据更新,如图5所示,还可以设置一个定时任务,例如是每5秒执行一次读取数据库的任务,当定时任务检测到数据库日志更新后,则触发本地缓存重新加载本地缓存数据。本地缓存首先向redis缓存中发送数据加载请求,通过redis缓存将数据加载请求发送至数据库,获取到的相关数据首先回写至redis缓存中,再回写至本地缓存中。
在本公开实施例提供的一种实施方式中,本地缓存中可以包括用于指示实体标识的实体数据、用户与用户组的归属关系数据、以及资源与资源组的归属关系数据。
在一示例中,本地缓存可以划分为实体数据查询缓存、归属关系查询缓存以及关联关系查询缓存。
其中,实体数据查询缓存中存储实体数据指示实体标识的实体数据,具体可以包括用户实体、用户组实体、资源组实体以及资源实体。示例性的,用户实体、用户组实体以及资源组实体的键值(Key)可以分别是用户标识(如用户ID)、用户组标识(如用户组ID)以及资源组标识(如资源组ID);资源实体的键值可以是指示URL或者具有业务含义的标识等的字符串,且字符串在业务全局内应该是唯一的。
归属关系查询缓存中存储用户与用户组的归属关系数据,以及资源与资源组的归属关系数据。以用户与用户组的归属关系数据为例,其键值对的键可以是用户ID,键值对的值可以是用户组ID集合,用户ID与用户组ID集合中每个用户组ID之间均存在U-O正向关联;以资源与资源组的归属关系数据为例,其键值对的键可以是资源ID(即为资源实体Key),键值对的值可以是资源组ID集合,资源ID与资源组ID集合中每个资源组ID之间均存在P-R正向关联。
在本公开实施例提供的一种实施方式中,关联关系查询缓存,用于根据请求参数查询是否存在或者不存在关联关系(包括正向关联和负向关联)。
在一具体示例中,关联关系查询缓存中包括反向查询缓存和正向查询缓存。其中,反向查询缓存用于确定两个实体ID之间不存在关联关系;正向查询缓存用于确定两个实体ID之间存在正向关联,或者用于确定两个实体ID之间存在负向关联,或者用于确定三个实体之间存在负向关联。
在本实施方式中,关联关系查询缓存中可以存储六种关联关系,分别为U-P正向关联,U-R正向关联,U-R负向关联,O-P正向关联,O-R正向关联,以及O-R负向关联。其中,U-P-R负向关联可以根据U-P正向关联确定,O-P-R负向关联可以根据O-P正向关联确定。
在一种实施方式中,反向查询缓存中存储的键值对的键(Key)是某个实体的ID,同时,键值对的值(Value)中存储另一个实体的ID。在一示例中,键值对的Value可以是压缩位图roaringBitmap,在roaringBitmap中存储另一个实体的ID,Key所指示的实体ID与Value所指示的实体ID之间没有关联关系,也即Key所指示的实体ID与roaringBitmap中存储实体ID之间没有关联关系。
在一种实施方式中,正向查询缓存中存储的键值对的键(Key)是两个实体的ID,表明这两个实体间存在关联关系,同时,键值对的值(Value)可以是一个结构体。
假设这两个实体分别为U和P,则可确定存在U-P正向关联,然后查看在该键值对的值中存储的结构体,如果结构体中存储有资源ID,则这个键值对指示存在U-P-R负向关联,如果结构体中不存在资源ID,则这个键值对指示存在U-P正向关联。其中,存在U-P-R负向关联的前提是存在U-P正向关联。同理,O-P-R负向关联可以根据O-P正向关联确定。
假设这两个实体分别为U和R,表明这两个实体间存在关联关系,然后查看在该键值对的Value中存储的结构体,如果结构体中指示该关联关系为正向关联,则这个键值对指示存在U-R正向关联,如果结构体中指示该关联关系为负向关联,则这个键值对指示存在U-R负向关联。
将与目标鉴权请求关联的关联关系称之为源标识与目标标识之间的关联关系,其中,所述源标识包括:用户标识或者目标组标识,所述目标标识包括:目标组标识或者资源标识。示例性的,若查询U-R正向关联或U-R负向关联,用户标识即为源标识,资源标识即为目标标识。进而,所述反向查询缓存中的数据用于确定所述源标识与所述目标标识之间是否不存在关联关系,所述正向查询缓存中的数据用于确定所述源标识与所述目标标识之间是否存在关联关系。
在一种可选的实施方式中,在本地缓存中查询与所述目标鉴权请求关联的关联关系步骤包括:
在反向查询缓存中查询与源标识对应的第一键值对;如果存在第一键值对且第一键值对中的值指示目标标识,则确定源标识与目标标识之间不存在关联关系;如果存在第一键值对且第一键值对中的值不指示目标标识,则在正向查询缓存中查询与源标识以及目标标识对应的第二键值对;如果存在第二键值对,则确定存在源标识与目标标识之间存在关联关系,并根据第二键值对的值信息确定源标识与目标标识的关联关系是否为与源标识和目标标识对应的负向关联。
在一种具体实施方式中,若要查询源标识与目标标识之间的关联关系,首先在反向查询缓存中查询,根据源标识确定一个键值对,并获取该键值对的值所指示的标识,具体可以根据源标识查出对应的压缩位图,如果压缩位图中包括目标标识,则确定源标识与目标标识之间没有关联关系,如果压缩位图中不包括目标标识,则继续在正向查询缓存中查询。如果根据源标识和目标标识能够在正向查询缓存中确定一个键值对,则确定源标识与目标标识之间存在关联关系,进而可以根据该键值对的值中的结构体信息确定源标识与目标标识之间是正向关联还是负向关联,在确定出源标识与目标标识之间正向关联之后,若该正向关联为U-P正向关联或者O-P正向关联,还可以根据该键值对的值中的结构体信息确定是否为U-P-R负向关联或者O-P-R负向关联。
图6是根据一示例性实施例示出的一种鉴权装置框图。参照图6,该装置包括接收单元310、查询单元320和鉴权单元330。其中,
接收单元310,被配置为接收目标鉴权请求,所述目标鉴权请求中的请求参数包括用户标识、目标组标识和资源标识,所述目标组标识包括资源组标识和用户组标识中的至少一个;
查询单元320,被配置为查询所述请求参数之间是否存在关联关系;所述关联关系的类型包括用户标识、目标组标识与资源标识中至少两个之间的正向关联,用户标识与资源标识之间的负向关联,以及用户标识、目标组标识与资源标识之间的负向关联;
其中,所述正向关联用于指示目标用户或目标用户组具备资源权限,或者目标用户或目标用户组关联目标资源组,或者目标用户与目标用户组存在归属关系,或者目标资源与目标资源组存在归属关系;所述负向关联用于指示目标用户全局不具备目标资源权限,或者目标用户在目标用户组中或在目标资源组中局部不具备目标资源权限;所述目标用户为与用户标识对应的用户,所述目标用户组为与用户组标识对应的用户组,所述目标资源组为与资源组标识对应的资源组,所述目标资源为与资源标识对应的资源;
鉴权单元330,被配置为基于预设的鉴权判定规则,根据查询结果确定与所述目标鉴权请求对应的鉴权结果,其中,所述目标鉴权请求用于请求鉴别目标用户是否全局具备目标资源权限,或者用于请求鉴别目标用户是否在目标资源组中或在目标用户组中局部具备目标资源权限。
在上述技术方案中,基于本公开实施例提供的UOPR模型来实现赋权或鉴权,提高了权限管理的灵活度和精细化度,降低了权限管理的维护成本,同时也提高了权限管理的可扩展性,使其适用于绝大多数的鉴权场景。
在本公开实施例的一个实施方式中,可选的,当目标组包括目标子组时,所述用户标识和所述资源标识中的至少一个与所述目标子组标识之间是否存在关联关系,同所述用户标识和所述资源标识中的至少一个与所述目标组标识之间是否存在关联关系相互独立。
在本公开实施例的一个实施方式中,可选的,所述用户标识和所述资源标识中的至少一个与所述目标子组标识之间的正向关联,用于确定所述用户标识和所述资源标识中的至少一个与所述目标组标识之间存在正向关联。
在本公开实施例的一个实施方式中,可选的,鉴权单元330被配置为如果查询到所述用户标识与所述资源标识之间的负向关联,则确定与所述目标鉴权请求对应的鉴权结果为无权限;
或者,鉴权单元330被配置为如果查询到所述用户标识与所述资源组标识之间的正向关联,以及所述用户标识、所述资源组标识与所述资源标识之间的负向关联,则确定与所述目标鉴权请求对应的鉴权结果为无权限;
或者,鉴权单元330被配置为如果查询到所述用户标识与所述用户组标识之间的正向关联,以及所述用户标识、所述用户组标识与所述资源标识之间的负向关联,则确定与所述目标鉴权请求对应的鉴权结果为无权限;
或者,鉴权单元330被配置为如果查询到所述用户标识与所述资源标识之间的正向关联、所述资源组标识与所述资源标识之间的正向关联,以及所述用户标识、所述资源组标识与所述资源标识之间的负向关联,则确定与所述目标鉴权请求对应的鉴权结果为无权限;
或者,鉴权单元330被配置为如果查询到所述用户标识与所述用户组标识之间的正向关联、所述用户组标识与所述资源标识之间的正向关联,以及所述用户标识、所述用户组标识与所述资源标识之间的负向关联,则确定与所述目标鉴权请求对应的鉴权结果为无权限。
在本公开实施例的一个实施方式中,可选的,鉴权单元330被配置为如果查询到所述用户标识与所述资源标识之间的正向关联,未查询所述用户标识与所述资源组标识之间的正向关联、所述用户标识与所述用户组标识之间的正向关联,以及未查询到任何负向关联,则确定与所述目标鉴权请求对应的鉴权结果为有权限。
在本公开实施例的一个实施方式中,可选的,鉴权单元330被配置为如果查询到所述资源组标识与所述资源标识之间的正向关联以及所述用户标识与所述资源组标识之间的正向关联,未查询到任何负向关联,则确定与所述目标鉴权请求对应的鉴权结果为有权限;
或者,鉴权单元330被配置为如果查询到所述资源组标识与所述资源标识之间的正向关联、所述用户标识与所述用户组标识之间的正向关联,以及所述用户组标识与所述资源组标识之间的正向关联,未查询到任何负向关联,则确定与所述目标鉴权请求对应的鉴权结果为有权限。
本公开实施例的一个实施方式中,可选的,鉴权单元330被配置为如果查询到所述用户标识与所述用户组标识之间的正向关联、所述用户标识与所述资源标识之间的正向关联,以及所述用户组标识与所述资源标识之间的负向关联或者所述用户组标识、所述资源组标识与所述资源标识之间的负向关联,则确定与所述用户标识对应的用户具备与所述资源标识对应的资源权限。
本公开实施例的一个实施方式中,可选的,查询单元320被配置为逐级在本地缓存、远程字典服务以及数据库中查询所述请求参数之间是否存在关联关系。
本公开实施例的一个实施方式中,可选的,所述请求参数之间的关联关系,包括:源标识与目标标识之间的关联关系,其中,所述源标识包括:用户标识或者目标组标识,所述目标标识包括:目标组标识或者资源标识;
所述本地缓存中包括:关联关系查询缓存,所述关联关系查询缓存中包括反向查询缓存和正向查询缓存,其中,所述反向查询缓存中的数据用于确定所述源标识与所述目标标识之间是否不存在关联关系,所述正向查询缓存中的数据用于确定所述源标识与所述目标标识之间是否存在关联关系;
对应的,查询单元320被配置为在所述反向查询缓存中查询与源标识对应的第一键值对;如果存在所述第一键值对且所述第一键值对中的值指示目标标识,则确定所述源标识与所述目标标识之间不存在关联关系;如果存在所述第一键值对且所述第一键值对中的值不指示目标标识,则在所述正向查询缓存中查询与所述源标识以及所述目标标识对应的第二键值对;如果存在所述第二键值对,则确定存在所述源标识与所述目标标识之间存在关联关系,并根据所述第二键值对的值信息确定所述源标识与所述目标标识的关联关系是否为与所述源标识和所述目标标识对应的负向关联。
本公开实施例的一个实施方式中,可选的,所述本地缓存中还包括:用于指示实体标识的实体数据、用户与用户组的归属关系数据、以及资源与资源组的归属关系数据。
本公开实施例的一个实施方式中,可选的,所述本地缓存根据所述数据库的操作日志定时更新。
关于上述实施例中的鉴权装置,其中各个单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图7是根据一示例性实施例示出的一种电子设备的结构示意图,如图7所示,该电子设备包括:
一个或多个处理器410,
图7中以一个处理器410为例;
存储器420;
所述设备中的处理器410和存储器420可以通过总线或者其他方式连接,图7中以通过总线连接为例。
存储器420作为一种非暂态计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本公开实施例中的一种鉴权方法对应的程序指令/模块(例如,附图6所示的接收单元310、查询单元320和鉴权单元330)。处理器410通过运行存储在存储器420中的软件程序、指令以及模块,从而执行计算机设备的各种功能应用以及数据处理,即实现上述方法实施例的一种鉴权方法,即:
接收目标鉴权请求,所述目标鉴权请求中的请求参数包括用户标识、目标组标识和资源标识,所述目标组标识包括资源组标识和用户组标识中的至少一个;
查询所述请求参数之间是否存在关联关系;所述关联关系的类型包括用户标识、目标组标识与资源标识中至少两个之间的正向关联,用户标识与资源标识之间的负向关联,以及用户标识、目标组标识与资源标识之间的负向关联;
其中,所述正向关联用于指示目标用户或目标用户组具备资源权限,或者目标用户或目标用户组关联目标资源组,或者目标用户与目标用户组存在归属关系,或者目标资源与目标资源组存在归属关系;所述负向关联用于指示目标用户全局不具备目标资源权限,或者目标用户在目标用户组中或在目标资源组中局部不具备目标资源权限;所述目标用户为与用户标识对应的用户,所述目标用户组为与用户组标识对应的用户组,所述目标资源组为与资源组标识对应的资源组,所述目标资源为与资源标识对应的资源;
基于预设的鉴权判定规则,根据查询结果确定与所述目标鉴权请求对应的鉴权结果,其中,所述目标鉴权请求用于请求鉴别目标用户是否全局具备目标资源权限,或者用于请求鉴别目标用户是否在目标资源组中或在目标用户组中局部具备目标资源权限。
存储器420可以包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需要的应用程序;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器420可以包括高速随机存取存储器,还可以包括非暂态性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态性固态存储器件。在一些实施例中,存储器420可选包括相对于处理器410远程设置的存储器,这些远程存储器可以通过网络连接至终端设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
在一个示例性实施例中,还提供了一种包括指令的存储介质,例如包括指令的存储器420,上述指令可由电子设备的处理器410执行以完成上述方法。可选地,存储介质可以是非临时性计算机可读存储介质,例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
图8是根据一示例性实施例示出的一种鉴权***的结构示意图,如图8所示,该鉴权***包括:客户端510和服务器520;其中,客户端510用于向服务器520发送目标鉴权请求,服务器520中配置如本公开任意实施例所述的鉴权装置。
在示例性实施例中,还提供了一种计算机应用程序产品,用于与电子设备结合使用,所述计算机应用程序产品包括计算机可读存储介质和内嵌于其中的计算机程序机制,经由计算机载入该程序并执行后能够实现如本公开任意实施例所述的鉴权方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (15)
1.一种鉴权方法,其特征在于,包括:
接收目标鉴权请求,所述目标鉴权请求中的请求参数包括用户标识、目标组标识和资源标识,所述目标组标识包括资源组标识和用户组标识中的至少一个;
查询所述请求参数之间是否存在关联关系;所述关联关系的类型包括用户标识、目标组标识与资源标识中至少两个之间的正向关联,用户标识与资源标识之间的负向关联,以及用户标识、目标组标识与资源标识之间的负向关联;
其中,所述正向关联用于指示目标用户或目标用户组具备资源权限,或者目标用户或目标用户组关联目标资源组,或者目标用户与目标用户组存在归属关系,或者目标资源与目标资源组存在归属关系;所述负向关联用于指示目标用户全局不具备目标资源权限,或者目标用户在目标用户组中或在目标资源组中局部不具备目标资源权限;所述目标用户为与用户标识对应的用户,所述目标用户组为与用户组标识对应的用户组,所述目标资源组为与资源组标识对应的资源组,所述目标资源为与资源标识对应的资源;
基于预设的鉴权判定规则,根据查询结果确定与所述目标鉴权请求对应的鉴权结果,其中,所述目标鉴权请求用于请求鉴别目标用户是否全局具备目标资源权限,或者用于请求鉴别目标用户是否在目标资源组中或在目标用户组中局部具备目标资源权限。
2.根据权利要求1所述的方法,其特征在于,
当目标组包括目标子组时,所述用户标识和所述资源标识中的至少一个与所述目标子组标识之间是否存在关联关系,同所述用户标识和所述资源标识中的至少一个与所述目标组标识之间是否存在关联关系相互独立。
3.根据权利要求2所述的方法,其特征在于,
所述用户标识和所述资源标识中的至少一个与所述目标子组标识之间的正向关联,用于确定所述用户标识和所述资源标识中的至少一个与所述目标组标识之间存在正向关联。
4.根据权利要求1所述的方法,其特征在于,所述基于预设的鉴权判定规则,根据查询结果确定与所述目标鉴权请求对应的鉴权结果步骤包括:
如果查询到所述用户标识与所述资源标识之间的负向关联,则确定与所述目标鉴权请求对应的鉴权结果为无权限;
或者,如果查询到所述用户标识与所述资源组标识之间的正向关联,以及所述用户标识、所述资源组标识与所述资源标识之间的负向关联,则确定与所述目标鉴权请求对应的鉴权结果为无权限;
或者,如果查询到所述用户标识与所述用户组标识之间的正向关联,以及所述用户标识、所述用户组标识与所述资源标识之间的负向关联,则确定与所述目标鉴权请求对应的鉴权结果为无权限;
或者,如果查询到所述用户标识与所述资源标识之间的正向关联、所述资源组标识与所述资源标识之间的正向关联,以及所述用户标识、所述资源组标识与所述资源标识之间的负向关联,则确定与所述目标鉴权请求对应的鉴权结果为无权限;
或者,如果查询到所述用户标识与所述用户组标识之间的正向关联、所述用户组标识与所述资源标识之间的正向关联,以及所述用户标识、所述用户组标识与所述资源标识之间的负向关联,则确定与所述目标鉴权请求对应的鉴权结果为无权限。
5.根据权利要求1所述的方法,其特征在于,所述基于预设的鉴权判定规则,根据查询结果确定与所述目标鉴权请求对应的鉴权结果步骤包括:
如果查询到所述用户标识与所述资源标识之间的正向关联,未查询所述用户标识与所述资源组标识之间的正向关联、所述用户标识与所述用户组标识之间的正向关联,以及未查询到任何负向关联,则确定与所述目标鉴权请求对应的鉴权结果为有权限。
6.根据权利要求1所述的方法,其特征在于,所述基于预设的鉴权判定规则,根据查询结果确定与所述目标鉴权请求对应的鉴权结果步骤包括:
如果查询到所述资源组标识与所述资源标识之间的正向关联以及所述用户标识与所述资源组标识之间的正向关联,未查询到任何负向关联,则确定与所述目标鉴权请求对应的鉴权结果为有权限;
或者,如果查询到所述资源组标识与所述资源标识之间的正向关联、所述用户标识与所述用户组标识之间的正向关联,以及所述用户组标识与所述资源组标识之间的正向关联,未查询到任何负向关联,则确定与所述目标鉴权请求对应的鉴权结果为有权限。
7.根据权利要求1所述的方法,其特征在于,还包括:
如果查询到所述用户标识与所述用户组标识之间的正向关联、所述用户标识与所述资源标识之间的正向关联,以及所述用户组标识与所述资源标识之间的负向关联或者所述用户组标识、所述资源组标识与所述资源标识之间的负向关联,则确定与所述用户标识对应的用户具备与所述资源标识对应的资源权限。
8.根据权利要求1所述的方法,其特征在于,所述查询所述请求参数之间是否存在关联关系步骤包括:
逐级在本地缓存、远程字典服务以及数据库中查询所述请求参数之间是否存在关联关系。
9.根据权利要求8所述的方法,其特征在于,
所述请求参数之间的关联关系,包括:源标识与目标标识之间的关联关系,其中,所述源标识包括:用户标识或者目标组标识,所述目标标识包括:目标组标识或者资源标识;
所述本地缓存中包括:关联关系查询缓存,所述关联关系查询缓存中包括反向查询缓存和正向查询缓存,其中,所述反向查询缓存中的数据用于确定所述源标识与所述目标标识之间是否不存在关联关系,所述正向查询缓存中的数据用于确定所述源标识与所述目标标识之间是否存在关联关系;
所述在本地缓存中查询所述请求参数之间是否存在关联关系步骤包括:
在所述反向查询缓存中查询与源标识对应的第一键值对;
如果存在所述第一键值对且所述第一键值对中的值指示目标标识,则确定所述源标识与所述目标标识之间不存在关联关系;
如果存在所述第一键值对且所述第一键值对中的值不指示目标标识,则在所述正向查询缓存中查询与所述源标识以及所述目标标识对应的第二键值对;
如果存在所述第二键值对,则确定存在所述源标识与所述目标标识之间存在关联关系,并根据所述第二键值对的值信息确定所述源标识与所述目标标识的关联关系是否为与所述源标识和所述目标标识对应的负向关联。
10.根据权利要求9所述的方法,其特征在于,所述本地缓存中还包括:用于指示实体标识的实体数据、用户与用户组的归属关系数据,以及资源与资源组的归属关系数据。
11.根据权利要求8所述的方法,其特征在于,所述本地缓存根据所述数据库的操作日志定时更新。
12.一种鉴权装置,其特征在于,包括:
接收单元,被配置为接收目标鉴权请求,所述目标鉴权请求中的请求参数包括用户标识、目标组标识和资源标识,所述目标组标识包括资源组标识和用户组标识中的至少一个;
查询单元,被配置为查询所述请求参数之间是否存在关联关系;所述关联关系的类型包括用户标识、目标组标识与资源标识中至少两个之间的正向关联,用户标识与资源标识之间的负向关联,以及用户标识、目标组标识与资源标识之间的负向关联;
其中,所述正向关联用于指示目标用户或目标用户组具备资源权限,或者目标用户或目标用户组关联目标资源组,或者目标用户与目标用户组存在归属关系,或者目标资源与目标资源组存在归属关系;所述负向关联用于指示目标用户全局不具备目标资源权限,或者目标用户在目标用户组中或在目标资源组中局部不具备目标资源权限;所述目标用户为与用户标识对应的用户,所述目标用户组为与用户组标识对应的用户组,所述目标资源组为与资源组标识对应的资源组,所述目标资源为与资源标识对应的资源;
鉴权单元,被配置为基于预设的鉴权判定规则,根据查询结果确定与所述目标鉴权请求对应的鉴权结果,其中,所述目标鉴权请求用于请求鉴别目标用户是否全局具备目标资源权限,或者用于请求鉴别目标用户是否在目标资源组中或在目标用户组中局部具备目标资源权限。
13.一种电子设备,其特征在于,包括:
处理器;
用于存储所述处理器可执行命令的存储器;
其中,所述处理器被配置为执行所述命令,以实现如权利要求1至11中任一项所述的鉴权方法。
14.一种存储介质,其特征在于,当所述存储介质中的命令由服务器的处理器执行时,使得服务器能够执行如权利要求1至11中任一项所述的鉴权方法。
15.一种计算机应用程序产品,用于与电子设备结合使用,所述计算机应用程序产品包括计算机可读存储介质和内嵌于其中的计算机程序机制,其特征在于,经由计算机载入该程序并执行后能够实现如权利要求1至11中任一项所述的鉴权方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010859534.5A CN111984949B (zh) | 2020-08-24 | 2020-08-24 | 鉴权方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010859534.5A CN111984949B (zh) | 2020-08-24 | 2020-08-24 | 鉴权方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111984949A CN111984949A (zh) | 2020-11-24 |
CN111984949B true CN111984949B (zh) | 2023-11-28 |
Family
ID=73443071
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010859534.5A Active CN111984949B (zh) | 2020-08-24 | 2020-08-24 | 鉴权方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111984949B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113742675A (zh) * | 2021-09-10 | 2021-12-03 | 深圳市闪联信息技术有限公司 | 一种基于IoT设备的USB存储介质安全管理***及方法 |
CN113626873B (zh) * | 2021-10-12 | 2022-05-06 | 北京金山云网络技术有限公司 | 鉴权方法、装置、电子设备和计算机可读介质 |
CN114416751B (zh) * | 2022-03-29 | 2022-07-01 | 中建电子商务有限责任公司 | 一种基于倍增位图的rbac优化算法 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102231693A (zh) * | 2010-04-22 | 2011-11-02 | 北京握奇数据***有限公司 | 访问权限的管理方法及装置 |
CN103078859A (zh) * | 2012-12-31 | 2013-05-01 | 普天新能源有限责任公司 | 业务***权限管理方法、设备及*** |
CN106506521A (zh) * | 2016-11-28 | 2017-03-15 | 腾讯科技(深圳)有限公司 | 资源访问控制方法和装置 |
CN106790060A (zh) * | 2016-12-20 | 2017-05-31 | 微梦创科网络科技(中国)有限公司 | 一种基于角色访问控制的权限管理方法及装置 |
CN107172044A (zh) * | 2017-05-15 | 2017-09-15 | 深圳市茁壮网络股份有限公司 | 一种终端权限控制方法及装置 |
CN109587151A (zh) * | 2018-12-13 | 2019-04-05 | 泰康保险集团股份有限公司 | 访问控制方法、装置、设备及计算机可读存储介质 |
CN109598117A (zh) * | 2018-10-24 | 2019-04-09 | 平安科技(深圳)有限公司 | 权限管理方法、装置、电子设备及存储介质 |
CN110516452A (zh) * | 2019-08-07 | 2019-11-29 | 浙江大搜车软件技术有限公司 | Rbac资源权限分配方法、装置、电子设备和存储介质 |
CN111475801A (zh) * | 2020-03-23 | 2020-07-31 | 西安万像电子科技有限公司 | 权限管理方法及*** |
CN111475841A (zh) * | 2020-04-07 | 2020-07-31 | 腾讯科技(深圳)有限公司 | 一种访问控制的方法、相关装置、设备、***及存储介质 |
CN111476579A (zh) * | 2020-05-14 | 2020-07-31 | 支付宝(杭州)信息技术有限公司 | 权限控制方法、装置、设备及介质 |
-
2020
- 2020-08-24 CN CN202010859534.5A patent/CN111984949B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102231693A (zh) * | 2010-04-22 | 2011-11-02 | 北京握奇数据***有限公司 | 访问权限的管理方法及装置 |
CN103078859A (zh) * | 2012-12-31 | 2013-05-01 | 普天新能源有限责任公司 | 业务***权限管理方法、设备及*** |
CN106506521A (zh) * | 2016-11-28 | 2017-03-15 | 腾讯科技(深圳)有限公司 | 资源访问控制方法和装置 |
CN106790060A (zh) * | 2016-12-20 | 2017-05-31 | 微梦创科网络科技(中国)有限公司 | 一种基于角色访问控制的权限管理方法及装置 |
CN107172044A (zh) * | 2017-05-15 | 2017-09-15 | 深圳市茁壮网络股份有限公司 | 一种终端权限控制方法及装置 |
CN109598117A (zh) * | 2018-10-24 | 2019-04-09 | 平安科技(深圳)有限公司 | 权限管理方法、装置、电子设备及存储介质 |
CN109587151A (zh) * | 2018-12-13 | 2019-04-05 | 泰康保险集团股份有限公司 | 访问控制方法、装置、设备及计算机可读存储介质 |
CN110516452A (zh) * | 2019-08-07 | 2019-11-29 | 浙江大搜车软件技术有限公司 | Rbac资源权限分配方法、装置、电子设备和存储介质 |
CN111475801A (zh) * | 2020-03-23 | 2020-07-31 | 西安万像电子科技有限公司 | 权限管理方法及*** |
CN111475841A (zh) * | 2020-04-07 | 2020-07-31 | 腾讯科技(深圳)有限公司 | 一种访问控制的方法、相关装置、设备、***及存储介质 |
CN111476579A (zh) * | 2020-05-14 | 2020-07-31 | 支付宝(杭州)信息技术有限公司 | 权限控制方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111984949A (zh) | 2020-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111984949B (zh) | 鉴权方法、装置、电子设备及存储介质 | |
US10097531B2 (en) | Techniques for credential generation | |
US11552951B2 (en) | Processing changes to authorized keys | |
US8938781B1 (en) | Systems and methods for managing user permissions | |
CN103067463B (zh) | 用户root权限集中管理***和管理方法 | |
US20050246762A1 (en) | Changing access permission based on usage of a computer resource | |
US20160156631A1 (en) | Methods and systems for shared file storage | |
US20030028798A1 (en) | System and method for enhancing authorization request in a computing device | |
CN107145531B (zh) | 分布式文件***及分布式文件***的用户管理方法 | |
KR101620601B1 (ko) | 보안성 진단 방법 및 이를 위한 컴퓨터 프로그램, 그 기록매체 | |
CN111209586A (zh) | 一种文档管理***及方法 | |
US20090158047A1 (en) | High performance secure caching in the mid-tier | |
CN115017526A (zh) | 数据库访问方法、装置、电子设备及存储介质 | |
CN107566375B (zh) | 访问控制方法和装置 | |
CN114817974A (zh) | 动态数据脱敏方法及***、数据安全处理方法及*** | |
Pappachan et al. | Sieve: A middleware approach to scalable access control for database management systems | |
KR101003095B1 (ko) | 다중 접근 개체에 대한 접근제어 방법 및 그 시스템 | |
CN113780789A (zh) | 一种统一数据访问服务型的细粒度权限控制方法及*** | |
CN104426836A (zh) | 一种入侵检测方法及装置 | |
Liu et al. | Smart hardware hybrid secure searchable encryption in cloud with IoT privacy management for smart home system | |
US10320798B2 (en) | Systems and methodologies for controlling access to a file system | |
CN109495432B (zh) | 一种匿名账户的鉴权方法及服务器 | |
US11522863B2 (en) | Method and system for managing resource access permissions within a computing environment | |
CN115022008A (zh) | 一种访问风险评估方法、装置、设备及介质 | |
US20240250948A1 (en) | Enforcing jit access control by leveraging pam and ldap |
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 |