CN116389103B - 一种基于角色权限的云原生微服务分布式鉴权方法和系统 - Google Patents
一种基于角色权限的云原生微服务分布式鉴权方法和系统 Download PDFInfo
- Publication number
- CN116389103B CN116389103B CN202310331892.2A CN202310331892A CN116389103B CN 116389103 B CN116389103 B CN 116389103B CN 202310331892 A CN202310331892 A CN 202310331892A CN 116389103 B CN116389103 B CN 116389103B
- Authority
- CN
- China
- Prior art keywords
- micro
- service
- module
- authentication
- access request
- 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 69
- 230000006870 function Effects 0.000 claims description 105
- 230000008569 process Effects 0.000 claims description 21
- 230000004044 response Effects 0.000 claims description 18
- 230000007246 mechanism Effects 0.000 claims description 13
- 230000008859 change Effects 0.000 claims description 12
- 238000012216 screening Methods 0.000 claims description 7
- 238000004590 computer program Methods 0.000 claims description 4
- 238000007726 management method Methods 0.000 description 44
- 239000008186 active pharmaceutical agent Substances 0.000 description 21
- 238000013475 authorization Methods 0.000 description 16
- 238000005516 engineering process Methods 0.000 description 13
- 238000012545 processing Methods 0.000 description 12
- 238000004891 communication Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 7
- 239000000243 solution Substances 0.000 description 6
- 238000013507 mapping Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 238000012795 verification Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000009545 invasion Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000010295 mobile communication Methods 0.000 description 2
- 238000004148 unit process Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000000969 carrier Substances 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
- 230000007812 deficiency Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
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/08—Network architectures or network communication protocols for network security for authentication of entities
-
- 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/10—Protocols in which an application is distributed across nodes in the network
-
- 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/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- 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/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Multi Processors (AREA)
- Storage Device Security (AREA)
Abstract
本申请提供一种基于角色权限的云原生微服务分布式鉴权方法和系统,云原生微服务平台中分布式部署有多个功能模块微服务,当接收到指向目标功能微服务的访问请求时,将访问请求转发至与目标功能模块微服务对应的鉴权模块中,其中,鉴权模块与目标功能模块部署在同一容器组中,访问请求至少携带有针对目标功能模块微服务的用户信息和操作权限信息;鉴权模块接收到访问请求后,基于目标功能模块微服务所在容器组中预先缓存的操作权限数据以及访问请求携带的用户信息和操作权限信息,对访问请求进行鉴权。由此,将鉴权模块分布式部署在对应功能模块微服务所在容器组中,并基于所在容器组中预先缓存的操作权限数据,实现对访问请求的高效、精准鉴权。
Description
技术领域
本申请涉及云原生技术领域,特别涉及一种基于角色权限的云原生微服务分布式鉴权方法、系统、计算机可读存储介质和电子设备。
背景技术
企业级访问控制系统是企业级管理平台的核心模块。目前,企业级访问控制系统通常使用RBAC方案(Role Based Access Control,基于角色的访问控制)来为用户授予操作权限,以及对用户的操作权限进行验证。
随着云原生(CloudNative)技术和微服务技术的快速发展,企业级管理平台逐渐开始云原生化和微服务化。在微服务架构下,每个微服务独立运行,作为独立的功能模块对访问请求进行响应,以提供相应的功能。当用户向某个功能模块微服务发出访问请求以调用某项功能或者访问某种资源时,就需要对该访问请求进行鉴权。
相关技术中提供了两种技术方案来实现微服务架构下企业级管理平台的鉴权:第一种技术方案:将鉴权功能从整个软件系统中剥离出来作为一个微服务独立运行,形成鉴权微服务;第二种技术方案:设置网关作为功能模块微服务的访问入口,任何访问功能模块微服务的请求需要先经过网关进行鉴权。
然而,随着企业级业务越来越复杂,功能模块微服务的数量也急剧增加,功能模块微服务的每一次访问均需要鉴权,也就是需要调用鉴权微服务,或者需要经过网关鉴权,导致现有鉴权微服务或者网关的集中式鉴权一定程度上降低了功能模块微服务的响应性能。此外,为了实现鉴权,鉴权微服务或者网关需要预先获取并集中存储所有功能模块微服务的操作权限数据,这种集中存储的模式数据结构单一,无法实现个性化处理,还有可能导致不同功能模块微服务的鉴权过程相互影响,降低了鉴权的效率和准确度。
因此,需要提供一种针对上述现有技术不足的改进技术方案。
发明内容
本申请的目的在于提供一种基于角色权限的云原生微服务分布式鉴权方法、系统、计算机可读存储介质和电子设备,以解决或缓解上述现有技术中存在的问题。
为了实现上述目的,本申请提供如下技术方案:
本申请提供一种基于角色权限的云原生微服务分布式鉴权方法,包括:
响应于接收到指向目标功能模块微服务的访问请求,将所述访问请求转发至鉴权模块;
其中,所述目标功能模块微服务为分布式部署在云原生微服务平台中的多个功能模块微服务中的任一个,所述目标功能模块微服务对应设置有所述鉴权模块,且所述鉴权模块与所述目标功能模块微服务部署在同一容器组中,所述访问请求至少携带有针对所述目标功能模块微服务的用户信息和操作权限信息;
所述鉴权模块基于所述目标功能模块微服务所在容器组中预先缓存的操作权限数据以及所述访问请求携带的用户信息和操作权限信息,对所述访问请求进行鉴权。
在一种可能的实现方式中,在所述鉴权模块基于所述目标功能模块微服务所在容器组中预先缓存的操作权限数据以及所述访问请求携带的用户信息和操作权限信息,对所述访问请求进行鉴权之前,还包括:
所述鉴权模块利用所述云原生微服务平台提供的系统消息通知机制对部署在所述云原生微服务平台的用户权限资源的变更事件进行监听;
响应于监听到所述用户权限资源的变更事件,所述鉴权模块将用户权限资源文件中记载的操作权限数据实时缓存至所述目标功能模块微服务所在容器组中;其中,所述用户权限资源文件用于定义所述用户权限资源。
在一种可能的实现方式中,所述目标功能模块微服务对应设置有所述鉴权模块,具体为:
所述目标功能模块微服务中内嵌有所述鉴权模块;
所述目标功能模块微服务还包括功能模块API,所述功能模块API作为所述目标功能模块微服务接收所述访问请求的入口;
对应地,所述响应于接收到指向目标功能模块微服务的访问请求,将所述访问请求转发至鉴权模块,具体为:
响应于接收到指向目标功能模块微服务的访问请求,所述目标功能模块微服务的功能模块API将所述访问请求转发至所述鉴权模块。
在一种可能的实现方式中,所述功能模块API具体包括中间件层和实现单元;
所述鉴权模块基于所述目标功能模块微服务所在容器组中预先缓存的操作权限数据以及所述访问请求携带的用户信息和操作权限信息,对所述访问请求进行鉴权,具体为:
所述中间件层将所述访问请求携带的用户信息和操作权限信息发送至所述鉴权模块;
所述鉴权模块基于接收到的所述用户信息和所述操作权限信息,对所述访问请求进行鉴权,并将鉴权结果返回所述中间件层;
响应于所述鉴权结果为鉴权通过,由所述中间件层将所述访问请求转发至所述实现单元,以由所述实现单元对所述访问请求进行响应。
在一种可能的实现方式中,所述目标功能模块微服务所在的容器组运行有边车容器,所述目标功能模块微服务部署在所述容器组的业务容器中;
对应地,所述目标功能模块微服务对应设置有所述鉴权模块,具体为:
在所述边车容器中注入所述鉴权模块;
所述响应于接收到指向目标功能模块微服务的访问请求,将所述访问请求转发至鉴权模块,具体为:
所述边车容器主动拦截发往所述目标功能模块微服务的访问请求,并将所述访问请求转发至所述鉴权模块。
在一种可能的实现方式中,所述云原生微服务平台中还设置有全局管理微服务;
在所述鉴权模块利用所述云原生微服务平台提供的系统消息通知机制对部署在所述云原生微服务平台的用户权限资源的变更事件进行监听之前,还包括:
所述全局管理微服务基于接收到的用户权限管理请求,对所述操作权限数据进行处理,并将处理后的所述操作权限数据记载在所述用户权限资源文件中。
在一种可能的实现方式中,所述鉴权模块将用户权限资源文件中记载的操作权限数据实时缓存至所述目标功能模块微服务所在容器组中,具体为:
所述鉴权模块使用预设的数据筛选工具对所述用户权限资源文件中记载的操作权限数据进行筛选,以确定所述目标功能模块微服务对应的目标操作权限数据;
保持所述目标操作权限数据的结构不变,并实时存储至所述目标功能模块微服务对应的缓存模块中。
本申请实施例提供一种基于角色权限的云原生微服务分布式鉴权系统,包括:
转发单元,配置为响应于接收到指向目标功能模块微服务的访问请求,将所述访问请求转发至鉴权模块;
其中,所述目标功能模块微服务为分布式部署在云原生微服务平台中的多个功能模块微服务中的任一个,所述目标功能模块微服务对应设置有所述鉴权模块,且所述鉴权模块与所述目标功能模块微服务部署在同一容器组中,所述访问请求至少携带有针对所述目标功能模块微服务的用户信息和操作权限信息;
鉴权单元,配置为所述鉴权模块基于所述目标功能模块微服务所在容器组中预先缓存的操作权限数据以及所述访问请求携带的用户信息和操作权限信息,对所述访问请求进行鉴权。
本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现如上任一所述的基于角色权限的云原生微服务分布式鉴权方法。
本申请实施例还提供一种电子设备,包括:存储器、处理器、以及存储在所述存储器中并可在所述处理器上运行的程序,所述处理器执行所述程序时实现如上任一所述的基于角色权限的云原生微服务分布式鉴权方法。
有益效果:
本申请的技术方案中,云原生微服务平台中分布式部署有多个功能模块微服务,当接收到指向目标功能微服务的访问请求时,将访问请求转发至目标功能模块微服务对应的鉴权模块中,其中,目标功能模块微服务是云原生微服务平台中分布式部署的多个功能模块微服务中的任一个,鉴权模块与目标功能模块部署在同一容器组中,访问请求至少携带有针对目标功能模块微服务的用户信息和操作权限信息;鉴权模块接收到访问请求后,基于目标功能模块微服务所在容器组中预先缓存的操作权限数据以及访问请求携带的用户信息和操作权限信息,对访问请求进行鉴权。由于目标功能模块微服务是云原生微服务平台中分布式部署的多个功能模块微服务中的任一个,目标功能模块微服务设置有对应的鉴权模块,且鉴权模块与目标功能模块微服务部署在同一容器组中,使得鉴权模块能够与目标功能模块微服务共同分布式部署在云原生微服务平台中,因此,当接收到指向目标功能模块微服务访问请求时,无需调用鉴权微服务或者通过网关,直接由目标功能模块微服务所在容器组中部署的鉴权模块对访问请求进行鉴权,避免了传统集中式鉴权过程导致的性能损失,提高了微服务架构下访问请求鉴权的效率。同时,由于操作权限数据预先缓存在目标功能模块微服务所在容器组中,使得鉴权模块对访问请求进行鉴权时,无需访问集中式存储的操作权限数据,只需调用对应的鉴权模块即可完成鉴权,避免了不同功能模块微服务的鉴权过程相互影响,进一步提升了鉴权的效率和准确度。此外,由于不同功能模块微服务所对应的操作权限数据缓存相互独立,使得用户能够针对不同的功能模块微服务设置不同的操作权限验证选项,进而实现鉴权的个性化处理。
附图说明
构成本申请的一部分的说明书附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。其中:
图1为根据本申请的一些实施例提供的基于角色权限的云原生微服务分布式鉴权方法的流程示意图;
图2为根据本申请的一些实施例提供的通过在功能模块微服务中内嵌设置鉴权模块实现分布式鉴权的逻辑示意图;
图3为根据本申请的一些实施例提供的借助边车技术部署鉴权模块实现分布式鉴权的逻辑示意图;
图4为根据本申请的一些实施例提供的基于角色权限的云原生微服务分布式鉴权系统的结构示意图;
图5为根据本申请的一些实施例提供的电子设备的结构示意图;
图6为根据本申请的一些实施例提供的电子设备的硬件结构图。
具体实施方式
为了便于理解本申请的技术方案,下面对一些术语和相关技术进行说明。
目前,企业级访问控制系统通常使用基于角色的访问控制方案。具体来说,在RBAC方案中,各种操作权限不是直接授予具体的用户,而是在用户集合与权限集合之间建立一个角色集合,每一种角色对应一组相应的操作权限集合,将操作权限分别给各个角色对应的用户,实现保护敏感数据和服务资源,确保服务之间的安全互操作性。
进一步地,RBAC方案实际上组建了一种“用户-角色-权限”的授权模型,与同一个角色关联的若干个用户就组成了一个用户组,每个用户可以拥有若干个角色,因此也可以属于若干个用户组。因此,在RBAC方案中,如果希望用户具有某种操作权限,则需要先定义角色,并在角色中引用该操作权限,然后将用户与角色绑定,使用户具有相应的权限。这种授权模型的好处在于,不必每次创建用户时都进行一次为用户分配权限的操作,只要为用户分配相应的角色即可,而且对角色拥有的若干个权限的变更会对所有拥有该角色的用户生效,避免频繁进行用户权限的设置和变更操作。
企业级管理平台是一组具有复杂功能、可以应对企业级需求的应用程序,这些应用程序通常用于大型组织或企业,以支持其核心业务流程和操作。相比于其他类型的软件来说,企业级管理平台具有功能丰富、资源种类繁多的特点,需要高度安全且精细的企业级访问控制系统来为每个用户授予操作权限,并在用户调用功能或者访问资源前对用户的操作权限进行验证,如果用户没有相应的操作权限,则对该用户的调用请求或者访问请求返回没有权限的反馈信息。
生产实践中,企业级访问控制系统作为企业级管理平台的核心模块,用于对企业级管理平台的用户进行授权和鉴权。此外,企业级管理平台通常配有管理界面,用于对企业级管理平台进行设置。企业级管理平台的管理员只需通过管理界面即可访问内置的企业级访问控制系统,并进行创建角色、为角色设置操作权限、为用户分配角色等操作。其中,角色可以包括默认角色和自定义角色,操作权限可以包括创建、编辑、删除、查看等。
在使用RBAC方案将操作权限分配给用户后,即完成了对该用户的授权。在该用户通过企业级管理平台的访问界面调用功能或者访问资源时,企业级访问控制系统需要对用户的操作进行实时、精准地鉴权。
随着云原生技术和微服务技术的快速发展,企业级管理平台逐渐开始云原生化和微服务化。云原生的英文为CloudNative,其实是一个词组Cloud+Native,词组中前者表示应有程序位于云中,后者表示应用程序从设计之初就会考虑云环境,原生为云而设计,在云上以最佳姿势运行。云原生可以理解为一系列技术及思想的集合,既包含微服务、容器等技术载体,也包含DevOps(开发与运维的合体)的组织形式和沟通文化,主要组成技术包括容器、服务编排管理和微服务技术。
微服务是一种用于构建应用程序的分布式架构框架,将一个单体架构的应用程序按业务划分为一个个的独立运行的程序,即微服务,微服务之间通过HTTP协议进行通信和相互调用。微服务化架构关注服务重用和业务系统的组件化,将一个大的软件系统拆分成多个独立的组件,以减少耦合。与传统的单体应用程序相比,微服务架构使得应用程序更加敏捷、可伸缩、灵活,并允许不同团队和开发者同时进行开发和维护不同的服务。此外,这种架构方法还提高了应用程序的可靠性、可维护性和可升级性。因此,越来越多的企业和组织正在采用微服务架构来构建大型、复杂的应用程序。
在微服务架构下,每个微服务独立运行,作为独立的功能模块对访问请求进行响应,以提供相应的功能。当用户向某个功能模块微服务发出访问请求以调用某项功能或者访问某种资源时,就需要对该用户的操作权限进行高效、精准的验证。
如背景技术所述,相关技术采用了两种技术方案来实现微服务架构下企业级管理平台的鉴权:
第一种技术方案是,将鉴权功能从整个软件系统中剥离出来作为一个微服务独立运行,任何一个功能模块微服务被调用前需要先调用鉴权微服务对用户的操作权限进行鉴权,只有鉴权通过才能调用该功能模块微服务。
第二种技术方案是,设置网关作为功能模块微服务的访问入口,在网关中缓存用户的操作权限数据,任何访问功能模块微服务的请求需要先经过网关进行鉴权,通过鉴权的访问请求才能被转发至对应的功能模块微服务。
上述两种技术方案存在一些局限性:(1)无论是调用鉴权微服务还是通过网关进行鉴权,其实质均为一种集中式鉴权方式,体现在鉴权功能的集中式提供以及用户的操作权限数据集中式存储,即任何功能模块微服务的被访问都需要先调用鉴权微服务或者使用网关鉴权,容易出现性能瓶颈和单点故障,鉴权效率较低,难以适应微服务架构下大规模企业级应用的需求。(2)调用鉴权微服务进行鉴权时,功能模块微服务与鉴权微服务之间需要通过HTTP协议进行通讯,会占用网络资源并产生一定的延时,有可能降低功能模块微服务的响应性能。(3)虽然网关可以通过缓存等技术降低微服务鉴权的耗时,一定程度上提高鉴权的效率,但是,由于所有用户的操作权限数据缓存在同一个网关中,数据结构单一,不能为每个功能模块微服务设置个性化的操作权限验证选项,也就无法根据其自身的需求进行个性化定制,授权/鉴权的灵活性不足。(4)此外,现有网关不能对缓存的用户的操作权限数据进行实时更新,更新不及时导致操作权限数据滞后,鉴权不够精准。
简而言之,对于企业级管理平台来说,需要对用户的操作进行实时、精准的鉴权。当企业级管理平台运行在微服务架构下时,每个功能模块微服务独立运行,任意一个功能模块微服务被访问时,都需要对访问该功能模块微服务的请求进行高效、精准地鉴权。而相关技术在实现微服务架构下企业级管理平台的鉴权时,无法对请求进行高效、精准地鉴权,也无法对不同的功能模块微服务提供个性化的鉴权,甚至会影响到功能模块微服务的性能。
为此,本申请实施例基于角色权限的授权模型,提供一种基于角色权限的云原生微服务分布式鉴权方法,该方法通过为分布式部署的每一个功能模块微服务设置对应的鉴权模块,并将操作权限数据预先缓存至每个功能模块微服务对应的容器组中,实现微服务架构下对每个功能模块微服务进行高效、精准、个性化的鉴权。
下面将参考附图并结合实施例来详细说明本申请。各个示例通过本申请的解释的方式提供而非限制本申请。实际上,本领域的技术人员将清楚,在不脱离本申请的范围或精神的情况下,可在本申请中进行修改和变型。例如,示为或描述为一个实施例的一部分的特征可用于另一个实施例,以产生又一个实施例。因此,所期望的是,本申请包含归入所附权利要求及其等同物的范围内的此类修改和变型。
示例性方法
本申请实施例提供一种基于角色权限的云原生微服务分布式鉴权方法,如图1~图3所示,该方法包括:
步骤S101、响应于接收到指向目标功能模块微服务的访问请求,将访问请求转发至鉴权模块。
其中,目标功能模块微服务为分布式部署在云原生微服务平台中的多个功能模块微服务中的任一个,目标功能模块微服务对应设置有鉴权模块,且鉴权模块与目标功能模块微服务部署在同一容器组中,访问请求至少携带有针对目标功能模块微服务的用户信息和操作权限信息。
本申请实施例中,云原生微服务平台中分布式部署有多个功能模块微服务,这里,功能模块微服务表示企业级管理平台实现具体功能的任一独立运行的微服务,为了便于说明,将访问请求要访问的功能模块微服务称为目标功能模块微服务,可以理解,目标功能模块微服务可以是云原生微服务平台中的分布式部署的多个功能模块微服务中的任一个。
本实施例中,目标功能模块微服务对应设置有鉴权模块,且鉴权模块与目标功能模块微服务部署在同一容器组中。这样的设置使得目标功能模块微服务的鉴权过程无需通过HTTP协议调用运行在其他位置的鉴权微服务,也无需通过网关,只需在容器组内部调用鉴权模块即可完成鉴权。
此外,每个请求功能模块微服务的访问请求至少应携带有用户信息和操作权限信息,目标功能模块微服务接收到访问请求后,为保证访问安全性,并不立即对访问请求作出响应,而是首先将访问请求转发至位于同一容器组的鉴权模块,由鉴权模块对用户的身份以及是否具有相应的操作权限进行确认。
由于功能模块微服务分布式部署在云原生微服务平台中,因此,鉴权模块随之分布式部署在云原生微服务平台中,也就是说,为了能够对功能模块微服务进行高效的鉴权,本实施例采用了分布式方案,通过单独为每个功能模块微服务设置对应的鉴权模块,使得各个功能模块微服务之间的鉴权过程以及鉴权需要的操作权限数据可以相互独立,互不干扰,这样做的好处在于:一方面能够提高鉴权的效率,另一方面也有利于为不同的功能模块微服务定义个性化的操作权限,实现个性化鉴权。
步骤S102、鉴权模块基于目标功能模块微服务所在容器组中预先缓存的操作权限数据以及访问请求携带的用户信息和操作权限信息,对访问请求进行鉴权。
本实施例中,目标功能模块微服务所在容器组中预先缓存有其对应的操作权限数据,接收到转发的访问请求后,鉴权模块首先解析访问请求,获取其携带的用户信息和操作权限信息,然后基于目标功能模块微服务所在容器组中预先缓存的操作权限数据以及访问请求携带的用户信息和操作权限信息,对访问请求进行鉴权。
具体地,鉴权模块可以通过鉴权模块中预设的鉴权SDK(Software DevelopmentKit,软件开发工具包)提供的鉴权方法查询本地缓存的操作权限数据,并将查询结果与访问请求中携带的用户信息和操作权限信息进行比对,进而根据比对结果完成鉴权。
本申请实施例充分利用基于角色权限的方案具有的操作权项设置灵活、可扩展的优势,采用基于角色权限的方案实现微服务架构下的授权与鉴权,具体来说,采用“用户-角色-权限”的授权模型来对每个用户授予操作权限,也就是说,容器组中预先缓存的操作权限数据中至少包含有角色-权限和用户-角色的缓存数据,这些缓存数据用于分别存储角色与操作权限的对应关系、用户与角色的对应关系,从而将基于“用户-角色-权限”的授权模型所产生的操作权限数据缓存到容器组本地。当鉴权模块对访问请求进行鉴权时,无需访问集中存储的操作权限数据,只需要访问容器组本地缓存,即可实现用户信息和操作权限信息的查询和比对并完成鉴权,提高了鉴权的效率。
在高效鉴权的基础上,为了进一步提高鉴权的准确度,一些实施例中,在鉴权模块基于目标功能模块微服务所在容器组中预先缓存的操作权限数据以及访问请求携带的用户信息和操作权限信息,对访问请求进行鉴权之前,还包括:鉴权模块利用云原生微服务平台提供的系统消息通知机制对部署在云原生微服务平台的用户权限资源的变更事件进行监听;响应于监听到用户权限资源的变更事件,鉴权模块将用户权限资源文件中记载的操作权限数据实时缓存至目标功能模块微服务所在容器组中。
其中,用户权限资源文件用于定义用户权限资源。
需要说明的是,以Kubernetes集群为代表的云原生微服务平台允许以创建自定义资源定义(CustomResourceDefinition,CRD)对象的形式扩展Kubernetes API,以在Kubernetes系统中定义CR,CRD对象中记载的数据存储在Kubernetes系统的ETCD中。
本实施例中,云原生微服务平台中部署有用户权限资源文件,用于定义对应的用户权限资源,扩展云原生微服务平台本身的功能(即提供扩展API)。其中,用户权限资源是一种CRD对象,简称用户-权限CRD,用户权限资源文件则是对应的CRD文件。具体来说,用户权限资源是根据用户权限资源文件创建的自定义资源对象,具体又包括角色-权限资源(CustomResource,CR)和用户-角色资源(CustomResource,CR)。
通过在云原生微服务平台中创建用户-权限CRD,并在用户-权限CRD中定义角色-权限CR和用户-角色CR,用来分别存储角色与操作权限的对应关系、用户与角色的对应关系,从而将基于“用户-角色-权限”授权模型所产生的操作权限数据以CRD的形式存储在云原生微服务平台的数据库中。
为了将CRD的形式存储在数据库中的操作权限数据预先缓存至目标功能模块微服务所在的容器组,鉴权模块利用云原生微服务平台提供的系统消息通知机制,对部署在云原生微服务平台的用户权限资源(比如角色-权限CR和用户-角色CR)的变更事件进行监听,并在监听到用户权限资源的变更事件后,将用户-权限CRD中记载的操作权限数据实时缓存至目标功能模块微服务所在容器组中。
具体地,参见图2、图3,云原生微服务平台中部署有用户-权限CRD,用户-权限CRD中定义了角色-权限CR和用户-角色CR。目标功能模块微服务在启动时,鉴权模块首先将用户-权限CRD中已存储的操作权限数据预先缓存到所在的容器组本地,并利用云原生微服务平台提供的List-Watch机制对用户-权限CRD进行实时监听,当用户-权限CRD被创建或者发生变化时,立即对容器组中缓存的操作权限数据进行同步更新。由于缓存在本地的操作权限数据能够与云原生微服务平台保持同步,使得在对目标功能模块微服务的访问请求进行鉴权时无需访问用户-权限CRD中存储的操作权限数据,只需调用对应的鉴权模块即可在容器组本地高效、精准地完成鉴权。
进一步地,为实现个性化鉴权,一些实施例中,云原生微服务平台中还设置有全局管理微服务;在鉴权模块利用云原生微服务平台提供的系统消息通知机制对部署在云原生微服务平台的用户权限资源的变更事件进行监听之前,还包括:全局管理微服务基于接收到的用户权限管理请求,对操作权限数据进行处理,并将处理后的操作权限数据记载在用户权限资源文件中。
本实施例中,全局管理微服务用于根据接收到的用户权限管理请求,基于“用户-角色-权限”的授权模型实现对每个用户授予相应的操作权限。进一步地,本实施例中还可以设置有平台管理客户端,全局管理微服务设置有用户-权限管理API,因此,云原生微服务平台的平台管理员可以通过平台管理客户端访问全局管理微服务,并调用全局管理微服务提供的用户-权限管理API来创建角色、为角色设置操作权限、为用户分配角色,并以用户-权限CRD的形式存储在数据库中,从而实现由平台管理员为用户授权。
一些应用场景中,授权操作也可以由用户发起,例如,用户登录平台管理客户端,根据自己的业务需求选择所需的操作权限,并将选择结果提交,由平台管理员进行审核,完成用户的授权处理。
通过本实施例提供的方案,云原生微服务平台的平台管理员可以通过自定义角色来为功能模块微服务定义个性化的操作权限,从而实现对不同功能模块微服务的个性化鉴权。
为了进一步提高鉴权效率,一些实施例中,鉴权模块将用户权限资源文件中记载的操作权限数据实时缓存至目标功能模块微服务所在容器组中,具体为:鉴权模块使用预设的数据筛选工具对用户权限资源文件中记载的操作权限数据进行筛选,以确定目标功能模块微服务对应的目标操作权限数据;保持目标操作权限数据的结构不变,并实时存储至目标功能模块微服务对应的缓存模块中。
也就是说,鉴权模块在将操作权限数据缓存在容器组时,并不将云原生微服务平台中存储的所有操作权限数据进行缓存,而是根据不同的功能模块微服务对用户权限资源文件中记载的操作权限数据进行筛选,仅仅缓存目标功能模块微服务对应的目标操作权限数据;这样不仅减少了需要缓存的数据量,减少缓存过程的数据传输量,有利于操作权限数据的实时更新,并且,在缓存过程中保持目标操作权限数据的结构不变,无需对数据内容进行转换处理,避免了数据结构转换带来的性能和数据损失。此外,由于目标操作权限数据的数据量远远小于云原生微服务平台中存储的操作权限数据的总量,使得鉴权模块在鉴权时查询和比对的效率大大提高,也就进一步提高了鉴权效率。
具体地,鉴权模块中预设的鉴权SDK中包含针对操作权限数据的数据筛选工具,可以根据目标功能模块微服务的标识信息等设置筛选条件,进而对操作权限数据进行有条件的、有选择性的选取操作,得到符合条件的目标操作权限数据,然后保持目标操作权限数据的结构不变,也就是不对其进行数据内容的转换处理,直接将其实时存储到目标功能模块微服务对应的缓存模块中。
其中,数据筛选工具可以基于数据库提供的查询功能实现,也可以基于机器学习训练筛选模型实现,本申请实施例对此不作限定。
为了部署鉴权模块并将操作权限数据预先缓存至功能模块微服务本地,针对不同场景下的需求,本申请提出了两种可能的实现方式来为目标功能模块微服务设置对应的鉴权模块并通过缓存模块实现将操作权限数据缓存到容器组本地。第一种可能的实现方式是对目标功能模块微服务本身进行修改,嵌入鉴权模块和缓存模块,第二种可能的实现方式是借助边车技术,为目标功能模块微服务模块所在的业务容器添加边车容器,并在边车容器中注入鉴权模块和缓存模块。
针对嵌入鉴权模块和缓存模块的实现方式,目标功能模块微服务对应设置有鉴权模块,具体为:目标功能模块微服务中内嵌有鉴权模块;目标功能模块微服务还包括功能模块API,功能模块API作为目标功能模块微服务接收访问请求的入口;对应地,响应于接收到指向目标功能模块微服务的访问请求,将访问请求转发至鉴权模块,具体为:响应于接收到指向目标功能模块微服务的访问请求,目标功能模块微服务的功能模块API将访问请求转发至鉴权模块。
具体地,如图2所示,目标功能模块微服务中内嵌有鉴权模块,同时,目标功能模块微服务中还内嵌有缓存模块,缓存模块中存储着从云原生微服务平台的数据库中实时同步的操作权限数据,比如用户-角色映射关系、角色-权限映射关系。在目标功能模块微服务运行过程中,其内嵌的鉴权模块利用云原生微服务平台提供的List-Watch机制对用户-权限CRD进行实时监听,当用户-权限CRD被创建或者发生变化时,立即对目标功能模块微服务缓存的操作权限数据进行同步更新,从而提高目标功能模块微服务本地缓存的操作权限数据的准确性和及时性。
此外,目标功能模块微服务还提供了功能模块API,作为接收指向目标功能模块微服务的访问请求的入口。当云原始微服务平台中的目标功能模块微服务被调用时,访问请求通过功能模块API来访问目标功能模块微服务,并由功能模块API将访问请求转发至鉴权模块。鉴权模块接收到访问请求后,根据所缓存在本地的操作权限数据对访问请求进行鉴权,若鉴权通过,再由目标功能模块微服务对访问请求进行处理并作出响应。
本实施例中,将鉴权模块和缓存模块内嵌设置在目标功能模块微服务中,虽然一定程度上对目标功能模块微服务造成入侵,但是,通过该方式能够在目标功能模块微服务内部对访问请求进行鉴权,整个鉴权过程无需访问外部微服务,也无需与外部交互以获取操作权限数据,并在鉴权通过后直接对访问请求进行处理,鉴权过程的安全性和可靠性更强,鉴权效率也更高。
进一步地,功能模块API具体包括中间件层和实现单元;鉴权模块基于目标功能模块微服务所在容器组中预先缓存的操作权限数据以及访问请求携带的用户信息和操作权限信息,对访问请求进行鉴权,具体为:中间件层将访问请求携带的用户信息和操作权限信息发送至鉴权模块;鉴权模块基于接收到的用户信息和操作权限信息,对访问请求进行鉴权,并将鉴权结果返回中间件层;响应于鉴权结果为鉴权通过,由中间件层将访问请求转发至实现单元,以由实现单元对访问请求进行响应。
本实施例中,目标功能模块微服务的功能模块API细分为中间件层和实现单元,其中,中间件层用于对指向目标功能模块微服务的访问请求进行鉴权,也就是说,当访问请求进入功能模块API后,将先调用中间件层对访问请求鉴权。中间件层对接收到的访问请求并不进行实质的鉴权处理,而是解析访问请求,以获取访问请求中携带的用户信息和操作权限信息,然后将该用户信息和访问请求所需的操作权限信息发送至鉴权模块,从而让鉴权模块使用预设鉴权SDK提供的鉴权方法查询已缓存在本地的操作权限数据,并将查询结果与接收到的用户信息和访问请求所需的操作权限信息进行比对,以判断是否鉴权通过。
具体来说,鉴权模块使用预设鉴权SDK提供的鉴权方法,根据用户信息查询该用户对应的至少一个角色,再遍历该用户对应的所有角色,确定该用户对应的所有操作权限,并将查询到的操作权限返回。然后,鉴权模块根据查询的结果,判断用户对应的所有操作权限中是否包含该访问请求所需的操作权限,并向中间件层返回鉴权结果。
若鉴权结果为鉴权通过,也就是该用户具备调用目标功能模块微服务的权限,则由中间件层将访问请求转发至实现单元,再由实现单元使用对应的功能实现方法对访问请求进行处理,并作出响应。若鉴权结果为鉴权未通过,则中间件层根据该鉴权结果判定应拒绝该访问请求,进而向访问请求的发送方返回拒绝访问的反馈信息。
示例性地,采用目标功能模块微服务中内嵌鉴权模块的方式实现分布式鉴权可以按照如下具体步骤执行:
步骤一、平台管理员通过平台管理客户端访问云原生微服务平台中的全局管理微服务,并调用全局管理微服务提供的用户-权限管理API完成对用户的授权操作,将用户的操作权限数据以用户-权限CRD的形式存储在云原生微服务平台的数据库中;
步骤二、目标功能模块微服务中的鉴权模块利用云原生微服务平台提供的List-Watch机制对用户-权限CRD进行实时监听,在目标功能模块微服务中同步缓存操作权限数据,并根据用户-权限CRD对已缓存的操作权限数据进行实时同步更新;
步骤三、目标功能模块微服务的功能模块API接收到访问请求后,功能模块API中的中间件层将访问请求中包含的用户信息和访问请求所需的操作权限的信息发送至鉴权模块;
步骤四、鉴权模块使用预设鉴权SDK提供的鉴权方法对访问请求进行鉴权,并将鉴权结果返回至中间件层;
步骤五、中间件层收到鉴权通过的反馈后,将访问请求转发至实现单元,由实现单元使用对应的功能实现方法对访问请求进行处理和响应。
针对借助边车技术的实现方式,目标功能模块微服务所在的容器组运行有边车容器,目标功能模块微服务部署在容器组的业务容器中;对应地,目标功能模块微服务对应设置有鉴权模块,具体为:在边车容器中注入鉴权模块;响应于接收到指向目标功能模块微服务的访问请求,将访问请求转发至鉴权模块,具体为:边车容器主动拦截发往目标功能模块微服务的访问请求,并将访问请求转发至鉴权模块。
需要说明的是,边车也称Sidecar,对应生活中三轮摩托车,通过对一个两轮摩托车加上一个边车,来拓展两轮摩托车的能力,使其不改变原来的功能,而增加新的功能。
具体地,参见图3,目标功能模块微服务所在的容器用于实现业务功能,简称业务容器,边车容器如同业务容器的边车,与业务容器位于同一容器组,通过边车容器中的边车应用,为业务容器中的主应用扩展或者增强功能。本实施例中,首先在边车容器中注入鉴权模块,同时,边车容器中还部署有缓存模块,缓存模块中存储有操作权限数据,例如用户-角色映射关系以及角色-权限映射关系。目标功能模块微服务运行过程中,边车容器中的鉴权模块利用云原生微服务平台提供的List-Watch机制对用户-权限CRD进行实时监听,当用户-权限CRD被创建或者发生变化时,立即对边车容器中缓存的操作权限数据进行同步更新。
边车容器具有主动拦截进出同一容器组中业务容器的访问请求的能力,也就是说,边车容器会主动拦截同一容器组中发向目标功能模块微服务的访问请求,以及主动拦截目标功能模块微服务发出的访问请求,以由边车容器中的鉴权模块和缓存模块进行相应的处理。因此,访问目标功能模块微服务的访问请求将被边车容器主动拦截,并将访问请求发送至预先注入边车容器的鉴权模块。
鉴权模块接收到访问请求后,从访问请求中解析出用户信息和操作权限信息,基于用户信息和操作权限信息,使用预设的鉴权SDK提供的鉴权方法查询已缓存的操作权限数据,并基于查询结果与用户信息和操作权限信息进行比对,以实现对访问请求进行鉴权。
具体地,在查询已缓存的操作权限数据并做比对时,鉴权模块使用预设的鉴权SDK提供的鉴权方法,先根据用户信息查询该用户对应的至少一个角色,再遍历该用户对应的所有角色,确定该用户对应的所有操作权限,并将查询到的操作权限返回至鉴权模块,然后再由鉴权模块判断用户对应的所有操作权限中是否包含该访问请求所需的操作权限,如果是,将访问请求转发至业务容器中的目标功能模块微服务,由目标功能模块微服务对访问请求进行处理并作出响应;如果不是,则向访问请求的发送方返回拒绝访问的反馈信息。
本实施例中,通过在边车容器中注入鉴权模块和缓存模块,使目标功能模块微服务具备本地实现鉴权的能力,也就是说,当接收到指向目标功能模块微服务的访问请求时,无需调用单独的鉴权微服务,也无需通过网关,只需通过边车容器中运行的鉴权模块,即可实现对该访问请求进行鉴权。同时,由于将鉴权模块和缓存模块直接注入在目标功能模块微服务所在容器组的边车容器中,无需对目标功能模块微服务的代码进行修改,能够实现对目标功能模块微服务的无侵入。
示例性地,采用边车技术实现分布式鉴权可以按照如下具体步骤执行:
步骤一、平台管理员通过平台管理客户端访问云原生微服务平台中的全局管理微服务,并调用全局管理微服务提供的用户-权限管理API完成对用户的授权操作,将用户的操作权限数据以用户-权限CRD的形式存储在云原生微服务平台的数据库中;
步骤二、边车容器中的鉴权模块利用云原生微服务平台提供的List-Watch机制对用户-权限CRD进行实时监听,在边车容器中同步缓存操作权限数据,并根据用户-权限CRD对已缓存的操作权限数据进行实时同步更新;
步骤三、边车容器对访问请求进行拦截,并将访问请求发送至边车容器中的鉴权模块;
步骤四、鉴权模块使用预设鉴权SDK提供的鉴权方法对访问请求进行鉴权;
步骤五、鉴权通过后,由鉴权模块将访问请求转发至业务容器中的目标功能模块微服务,由目标功能模块微服务对访问请求进行处理和响应。
综上所述,本申请实施例提供的技术方案中,云原生微服务平台中分布式部署有多个功能模块微服务,当接收到指向目标功能微服务的访问请求时,将访问请求转发至目标功能模块微服务对应的鉴权模块中,其中,目标功能模块微服务是云原生微服务平台中分布式部署的多个功能模块微服务中的任一个,鉴权模块与目标功能模块部署在同一容器组中,访问请求至少携带有针对目标功能模块微服务的用户信息和操作权限信息;鉴权模块接收到访问请求后,基于目标功能模块微服务所在容器组中预先缓存的操作权限数据以及访问请求携带的用户信息和操作权限信息,对访问请求进行鉴权。由于目标功能模块微服务是云原生微服务平台中分布式部署的多个功能模块微服务中的任一个,目标功能模块微服务设置有对应的鉴权模块,且鉴权模块与目标功能模块微服务部署在同一容器组中,使得鉴权模块能够与目标功能模块微服务共同分布式部署在云原生微服务平台中,因此,当接收到指向目标功能模块微服务访问请求时,无需调用鉴权微服务或者通过网关,直接由目标功能模块微服务所在容器组中部署的鉴权模块对访问请求进行鉴权,避免了传统集中式鉴权过程导致的性能损失,提高了微服务架构下访问请求鉴权的效率。同时,由于操作权限数据预先缓存在目标功能模块微服务所在容器组中,使得鉴权模块对访问请求进行鉴权时,无需访问集中式存储的操作权限数据,只需调用对应的鉴权模块即可完成鉴权,避免了不同功能模块微服务的鉴权过程相互影响,进一步提升了鉴权的效率和准确度。此外,由于不同功能模块微服务所对应的操作权限数据缓存相互独立,使得用户能够针对不同的功能模块微服务设置不同的操作权限验证选项,进而实现鉴权的个性化处理。
本申请中,云原生微服务平台中以CRD对象的形式对“用户-角色-权限”授权模型的操作权限数据进行存储,并借助云原生微服务平台提供的List-Watch机制将操作权限数据实时同步至每个功能模块微服务。当CRD对象中存储的操作权限数据发生变化时,与该操作权限数据相关的功能模块微服务对应的缓存中存储的操作权限数据也将实时同步变化,确保了每个功能模块微服务对应的缓存中存储的操作权限数据的准确性。
本申请中,鉴权模块和缓存模块部署在对应功能模块微服务所在的容器组中,各个功能模块微服务本地均预先缓存了对应的操作权限数据,使得在对指向目标功能模块微服务的访问请求进行鉴权时,鉴权模块能够直接查询本地缓存的操作权限数据,无需访问云原生微服务平台中的CRD对象,即可对访问请求进行高效、精准的鉴权。
本申请实施例提供了两种实现方式为目标功能模块微服务设置对应的鉴权模块和缓存模块,即采用在目标功能模块微服务内嵌鉴权模块和缓存模块的方式,以及采用借助边车技术注入鉴权模块和缓存模块的方式,其中,采用内嵌鉴权模块和缓存模块的方式虽然对目标功能模块微服务造成一定入侵,但能够在目标功能模块微服务内部完成鉴权和访问请求的处理,鉴权过程的安全性和可靠性强;而采用边车注入的方式对目标功能模块微服务进行扩展时,能够实现对目标功能模块微服务无入侵。由此,用户可以针对不同场景下的需求,采用不同的实现方式部署鉴权模块和缓存模块,扩展了本方法的适用范围。
示例性系统
本申请实施例提供一种基于角色权限的云原生微服务分布式鉴权系统,如图4所示,该系统包括:转发单元401和鉴权单元402。
转发单元401,配置为响应于接收到指向目标功能模块微服务的访问请求,将访问请求转发至鉴权模块。
其中,目标功能模块微服务为分布式部署在云原生微服务平台中的多个功能模块微服务中的任一个,目标功能模块微服务对应设置有鉴权模块,且鉴权模块与目标功能模块微服务部署在同一容器组中,访问请求至少携带有针对目标功能模块微服务的用户信息和操作权限信息。
鉴权单元402,配置为鉴权模块基于目标功能模块微服务所在容器组中预先缓存的操作权限数据以及访问请求携带的用户信息和操作权限信息,对访问请求进行鉴权。
本申请实施例提供的基于角色权限的云原生微服务分布式鉴权系统,能够实现上述任一实施例提供的基于角色权限的云原生微服务分布式鉴权方法的步骤、流程,并达到相同的技术效果,在此不再一一赘述。
示例性设备
图5为根据本申请的一些实施例提供的电子设备的结构示意图;如图5所示,该电子设备包括:
一个或多个处理器501;
计算机可读介质,可以配置为存储一个或多个程序502。
一个或多个处理器501执行一个或多个程序502时,实现如下步骤:响应于接收到指向目标功能模块微服务的访问请求,将访问请求转发至鉴权模块;其中,目标功能模块微服务为分布式部署在云原生微服务平台中的多个功能模块微服务中的任一个,目标功能模块微服务对应设置有鉴权模块,且鉴权模块与目标功能模块微服务部署在同一容器组中,访问请求至少携带有针对目标功能模块微服务的用户信息和操作权限信息;鉴权模块基于目标功能模块微服务所在容器组中预先缓存的操作权限数据以及访问请求携带的用户信息和操作权限信息,对访问请求进行鉴权。
图6为根据本申请的一些实施例提供的电子设备的硬件结构;如图6所示,该电子设备的硬件结构可以包括:处理器601、通信接口602、计算机可读介质603和通信总线604。
其中,处理器601、通信接口602、计算机可读存储介质603通过通信总线604完成相互间的通信。
计算机可读介质603,可以配置为存储一个或多个程序。
可选地,通信接口602可以为通信模块的接口,如GSM模块的接口。
其中,处理器601具体可以配置为:响应于接收到指向目标功能模块微服务的访问请求,将访问请求转发至鉴权模块;其中,目标功能模块微服务为分布式部署在云原生微服务平台中的多个功能模块微服务中的任一个,目标功能模块微服务对应设置有鉴权模块,且鉴权模块与目标功能模块微服务部署在同一容器组中,访问请求至少携带有针对目标功能模块微服务的用户信息和操作权限信息;鉴权模块基于目标功能模块微服务所在容器组中预先缓存的操作权限数据以及访问请求携带的用户信息和操作权限信息,对访问请求进行鉴权。
处理器601可以是通用处理器,包括中央处理器(central processing unit,简称CPU)、网络处理器(Network Processor,简称NP)等,还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
本申请实施例的电子设备以多种形式存在,包括但不限于:
(1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标。这类终端包括:智能手机(例如:iPhone)、多媒体手机、功能性手机,以及低端手机等。
(2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:PDA、MID和UMPC设备等,例如iPad。
(3)便携式娱乐设备:这类设备可以显示和播放多媒体内容。该类设备包括:音频、视频播放器(例如:iPod),掌上游戏机,电子书,以及智能玩具和便携式车载导航设备。
(4)服务器:提供计算服务的设备,服务器的构成包括处理器、硬盘、内存、系统总线等,服务器和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。
(5)其他具有数据交互功能的电子装置。
需要指出,根据实施的需要,可将本申请实施例中描述的各个部件/步骤拆分为更多部件/步骤,也可以将两个或多个部件/步骤或者部件/步骤的部分操作组合成新的部件/步骤,以实现本申请实施例的目的。
上述根据本申请实施例的方法可在硬件、固件中实现,或者被实现为可存储在记录介质(诸如CD ROM、RAM、软盘、硬盘或磁光盘)中的软件或计算机代码,或者被实现通过网络下载的原始存储在远程记录介质或非暂时机器存储介质中并将被存储在本地记录介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件(诸如ASIC或FPGA)的记录介质上的这样的软件处理。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件(例如,RAM、ROM、闪存等),当软件或计算机代码被计算机、处理器或硬件访问且执行时,实现在此描述的基于角色权限的云原生微服务分布式鉴权方法。此外,当通用计算机访问用于实现在此示出的方法的代码时,代码的执行将通用计算机转换为用于执行在此示出的方法的专用计算机。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和涉及约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请实施例的范围。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备及系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。
以上所描述的设备及系统实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元提示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅为本申请的优选实施例,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种基于角色权限的云原生微服务分布式鉴权方法,其特征在于,包括:
响应于接收到指向目标功能模块微服务的访问请求,将所述访问请求转发至与所述目标功能模块微服务位于同一容器组的鉴权模块;
其中,所述目标功能模块微服务为分布式部署在云原生微服务平台中的多个功能模块微服务中的任一个,每一所述功能模块微服务均单独对应设置有所述鉴权模块,且所述鉴权模块与所述功能模块微服务部署在同一容器组中,所述访问请求至少携带有针对所述目标功能模块微服务的用户信息和操作权限信息;
所述鉴权模块基于所述目标功能模块微服务所在容器组中预先缓存的操作权限数据以及所述访问请求携带的用户信息和操作权限信息,对所述访问请求进行鉴权。
2.根据权利要求1所述的基于角色权限的云原生微服务分布式鉴权方法,其特征在于,在所述鉴权模块基于所述目标功能模块微服务所在容器组中预先缓存的操作权限数据以及所述访问请求携带的用户信息和操作权限信息,对所述访问请求进行鉴权之前,还包括:
所述鉴权模块利用所述云原生微服务平台提供的系统消息通知机制对部署在所述云原生微服务平台的用户权限资源的变更事件进行监听;
响应于监听到所述用户权限资源的变更事件,所述鉴权模块将用户权限资源文件中记载的操作权限数据实时缓存至所述目标功能模块微服务所在容器组中;其中,所述用户权限资源文件用于定义所述用户权限资源。
3.根据权利要求2所述的基于角色权限的云原生微服务分布式鉴权方法,其特征在于,所述目标功能模块微服务对应设置有所述鉴权模块,具体为:
所述目标功能模块微服务中内嵌有所述鉴权模块;
所述目标功能模块微服务还包括功能模块API,所述功能模块API作为所述目标功能模块微服务接收所述访问请求的入口;
对应地,所述响应于接收到指向目标功能模块微服务的访问请求,将所述访问请求转发至鉴权模块,具体为:
响应于接收到指向目标功能模块微服务的访问请求,所述目标功能模块微服务的功能模块API将所述访问请求转发至所述鉴权模块。
4.根据权利要求3所述的基于角色权限的云原生微服务分布式鉴权方法,其特征在于,所述功能模块API具体包括中间件层和实现单元;
所述鉴权模块基于所述目标功能模块微服务所在容器组中预先缓存的操作权限数据以及所述访问请求携带的用户信息和操作权限信息,对所述访问请求进行鉴权,具体为:
所述中间件层将所述访问请求携带的用户信息和操作权限信息发送至所述鉴权模块;
所述鉴权模块基于接收到的所述用户信息和所述操作权限信息,对所述访问请求进行鉴权,并将鉴权结果返回所述中间件层;
响应于所述鉴权结果为鉴权通过,由所述中间件层将所述访问请求转发至所述实现单元,以由所述实现单元对所述访问请求进行响应。
5.根据权利要求2所述的基于角色权限的云原生微服务分布式鉴权方法,其特征在于,所述目标功能模块微服务所在的容器组运行有边车容器,所述目标功能模块微服务部署在所述容器组的业务容器中;
对应地,所述目标功能模块微服务对应设置有所述鉴权模块,具体为:
在所述边车容器中注入所述鉴权模块;
所述响应于接收到指向目标功能模块微服务的访问请求,将所述访问请求转发至鉴权模块,具体为:
所述边车容器主动拦截发往所述目标功能模块微服务的访问请求,并将所述访问请求转发至所述鉴权模块。
6.根据权利要求2至5任一所述的基于角色权限的云原生微服务分布式鉴权方法,其特征在于,所述云原生微服务平台中还设置有全局管理微服务;
在所述鉴权模块利用所述云原生微服务平台提供的系统消息通知机制对部署在所述云原生微服务平台的用户权限资源的变更事件进行监听之前,还包括:
所述全局管理微服务基于接收到的用户权限管理请求,对所述操作权限数据进行处理,并将处理后的所述操作权限数据记载在所述用户权限资源文件中。
7.根据权利要求2所述的基于角色权限的云原生微服务分布式鉴权方法,其特征在于,所述鉴权模块将用户权限资源文件中记载的操作权限数据实时缓存至所述目标功能模块微服务所在容器组中,具体为:
所述鉴权模块使用预设的数据筛选工具对所述用户权限资源文件中记载的操作权限数据进行筛选,以确定所述目标功能模块微服务对应的目标操作权限数据;
保持所述目标操作权限数据的结构不变,并实时存储至所述目标功能模块微服务对应的缓存模块中。
8.一种基于角色权限的云原生微服务分布式鉴权系统,其特征在于,包括:
转发单元,配置为响应于接收到指向目标功能模块微服务的访问请求,将所述访问请求转发至与所述目标功能模块微服务位于同一容器组的鉴权模块;
其中,所述目标功能模块微服务为分布式部署在云原生微服务平台中的多个功能模块微服务中的任一个,每一所述功能模块微服务均单独对应设置有所述鉴权模块,且所述鉴权模块与所述功能模块微服务部署在同一容器组中,所述访问请求至少携带有针对所述目标功能模块微服务的用户信息和操作权限信息;
鉴权单元,配置为所述鉴权模块基于所述目标功能模块微服务所在容器组中预先缓存的操作权限数据以及所述访问请求携带的用户信息和操作权限信息,对所述访问请求进行鉴权。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现权利要求1-7任一所述的基于角色权限的云原生微服务分布式鉴权方法。
10.一种电子设备,其特征在于,包括:存储器、处理器、以及存储在所述存储器中并可在所述处理器上运行的程序,所述处理器执行所述程序时实现如权利要求1-7任一所述的基于角色权限的云原生微服务分布式鉴权方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310331892.2A CN116389103B (zh) | 2023-03-30 | 2023-03-30 | 一种基于角色权限的云原生微服务分布式鉴权方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310331892.2A CN116389103B (zh) | 2023-03-30 | 2023-03-30 | 一种基于角色权限的云原生微服务分布式鉴权方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116389103A CN116389103A (zh) | 2023-07-04 |
CN116389103B true CN116389103B (zh) | 2024-01-26 |
Family
ID=86972606
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310331892.2A Active CN116389103B (zh) | 2023-03-30 | 2023-03-30 | 一种基于角色权限的云原生微服务分布式鉴权方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116389103B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109683988A (zh) * | 2018-12-25 | 2019-04-26 | 鼎信信息科技有限责任公司 | 微服务启动方法、装置、计算机设备和存储介质 |
CN110460595A (zh) * | 2019-08-02 | 2019-11-15 | 阿里巴巴集团控股有限公司 | 一种鉴权与业务服务方法、装置以及设备 |
WO2022022253A1 (zh) * | 2020-07-28 | 2022-02-03 | 北京金山云网络技术有限公司 | 一种服务鉴权方法、装置、设备、系统及存储介质 |
CN114745431A (zh) * | 2022-03-18 | 2022-07-12 | 上海道客网络科技有限公司 | 基于边车技术的无侵入式权限认证方法、系统、介质和设备 |
CN115604199A (zh) * | 2022-10-09 | 2023-01-13 | 上海道客网络科技有限公司(Cn) | 一种云原生平台微服务网关的服务路由方法和系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11057393B2 (en) * | 2018-03-02 | 2021-07-06 | Cloudentity, Inc. | Microservice architecture for identity and access management |
-
2023
- 2023-03-30 CN CN202310331892.2A patent/CN116389103B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109683988A (zh) * | 2018-12-25 | 2019-04-26 | 鼎信信息科技有限责任公司 | 微服务启动方法、装置、计算机设备和存储介质 |
CN110460595A (zh) * | 2019-08-02 | 2019-11-15 | 阿里巴巴集团控股有限公司 | 一种鉴权与业务服务方法、装置以及设备 |
WO2022022253A1 (zh) * | 2020-07-28 | 2022-02-03 | 北京金山云网络技术有限公司 | 一种服务鉴权方法、装置、设备、系统及存储介质 |
CN114745431A (zh) * | 2022-03-18 | 2022-07-12 | 上海道客网络科技有限公司 | 基于边车技术的无侵入式权限认证方法、系统、介质和设备 |
CN115604199A (zh) * | 2022-10-09 | 2023-01-13 | 上海道客网络科技有限公司(Cn) | 一种云原生平台微服务网关的服务路由方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN116389103A (zh) | 2023-07-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10693864B2 (en) | Single sign-on between multiple data centers | |
US9866640B2 (en) | Cookie based session management | |
CN107784221B (zh) | 权限控制方法、服务提供方法、装置、系统及电子设备 | |
CN102281324B (zh) | 一种移动通信终端系统菜单项远程授权管理的方法 | |
JP2018521399A (ja) | コマンド実行に対するユーザアクセスの制御 | |
CN109635550B (zh) | 集群数据的权限校验方法、网关及系统 | |
CN114745431B (zh) | 基于边车技术的无侵入式权限认证方法、系统、介质和设备 | |
CN112235285A (zh) | 基于非会话的用户认证模式和服务的方法及系统 | |
CN104753677A (zh) | 密码分级控制方法和系统 | |
CN110659100A (zh) | 容器管理方法、装置和设备 | |
CN109543448A (zh) | Hdfs文件访问权限控制方法、设备及存储介质 | |
US8516602B2 (en) | Methods, apparatuses, and computer program products for providing distributed access rights management using access rights filters | |
CN115544585A (zh) | 一种动态配置安全内存的方法、设备、装置及存储介质 | |
CN201690475U (zh) | 一种企业局域网中的应用服务器访问系统 | |
CN112243016A (zh) | 一种中间件平台、终端设备、5g人工智能云处理系统及处理方法 | |
CN116389103B (zh) | 一种基于角色权限的云原生微服务分布式鉴权方法和系统 | |
CN104104564A (zh) | 私有云中设备间自动建立基于wifi局域网的方法及装置 | |
CN101827110B (zh) | 一种企业局域网中的应用服务器访问系统 | |
CN105681291A (zh) | 一种实现多客户端统一认证方法及系统 | |
CN116055151A (zh) | 业务权限令牌获取方法、系统、电子设备及存储介质 | |
CN114070616A (zh) | 一种基于redis缓存的分布式会话共享方法及系统 | |
US20200349282A1 (en) | Multi-persona enrollment management | |
CN113332710A (zh) | 一种游戏账号登录方法、装置、电子设备及存储介质 | |
KR101363561B1 (ko) | 웹을 통한 응용서비스 생명주기 관리를 위한 soa 기반 서비스 플랫폼 시스템 | |
CN115174062B (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 |