CN111586030B - 一种基于微服务多租户的接口鉴权、权限验证方法及系统 - Google Patents
一种基于微服务多租户的接口鉴权、权限验证方法及系统 Download PDFInfo
- Publication number
- CN111586030B CN111586030B CN202010367105.6A CN202010367105A CN111586030B CN 111586030 B CN111586030 B CN 111586030B CN 202010367105 A CN202010367105 A CN 202010367105A CN 111586030 B CN111586030 B CN 111586030B
- Authority
- CN
- China
- Prior art keywords
- user
- token
- tenant
- authority
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0815—Network architectures or network communication protocols for network security for authentication of entities providing single-sign-on or federations
-
- 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
- H04L63/0807—Network architectures or network communication protocols for network security for authentication of entities using tickets, e.g. Kerberos
-
- 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
- H04L63/083—Network architectures or network communication protocols for network security for authentication of entities using passwords
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
- H04L63/105—Multiple levels of security
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
- H04L63/108—Network architectures or network communication protocols for network security for controlling access to devices or network resources when the policy decisions are valid for a limited amount of time
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- 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
Abstract
本发明公开了一种基于微服务多租户的接口鉴权、权限验证方法及系统,涉及微服务技术领域,本发明可供不同的终端以及不同的应用进行调用提高了接口的维护性,只需维护接口版本等即可,同时方便终端业务的集成式开发,无需关注后台开发,只需要对前端做相应的开发即可,可适用于前端后端分离的开发模式。同时,本发明采用无状态登陆方式验证,天然支持单点登陆,方便子系统的相互集成,而且没有单点登陆瓶颈;然而在性能方面,权限认证进行抽离通过网关进行独立部署运行结合分布式缓存,无需频繁关注数据库的交互的性能瓶颈,大大提高资源访问的安全及性能。
Description
技术领域
本发明涉及微服务技术领域,具体涉及一种基于微服务多租户的接口鉴权、权限验证方法及系统。
背景技术
传统软件模式架构比较单一,采用传统带有的视图层框架进行web项目开发的方式,其缺陷是:代码臃肿,不便于维护,扩展性差。对于安全验证采用常用开源框架,虽然开发难度低,但是对于微服务架构而言适用性较低,并且对于前后端分离的架构方式就会显得绰绰有余。
目大部分的开发者经历和开发过单体应用,无论是传统的Servlet+JSP,还是SSM,或是现在的SpringBoot,它们都是单体应用,存在部署成本高,改动影响大,风险高,无法满足快速扩容,弹性伸缩,因此微服务架构诞生了,但是微服务带来了新的问题,如复杂性,分布式事务问题,权限设计问题等等。
因此,亟需一种基于微服务实现全新的接口鉴权和权限分配设计。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种基于微服务多租户的接口鉴权、权限验证方法及系统,提高接口的维护性、提高资源访问的安全及性能。
为达到以上目的,本发明采取的技术方案是:一种基于微服务多租户的接口鉴权、权限验证方法,包括以下步骤:
设置用户权限表,用户权限表用于存储租户ID及对应的用户ID、用户角色、应用、权限信息;
用户通过登陆接口登陆平台认证服务器时,平台认证服务器获取用户ID、密码和用户类别并验证密码,若验证通过,根据用户ID和所属的租户ID、token过期时间、用户类别对应的密钥,生成token和Refresh Token;并根据用户ID和租户ID查询所述用户权限表获取用户对应的角色集合和权限信息,将用户的角色集合、权限信息和token、用户类别拼装成JSON字符串返回给客户端;
用户通过请求接口发起获取资源服务的用户请求时,用户请求中携带用户类别和token,平台网关服务器获取用户请求中的用户类别和token,通过用户类别对token进行解密操作,如果解密成功则返回用户ID及租户ID,通过解析出的用户ID及租户ID查询用户权限表,根据对应的权限信息调用本地缓存中的资源服务。
在上述技术方案的基础上,所述权限信息包括资源名称、资源编码、接口URL的集合。
在上述技术方案的基础上,根据用户ID和所属的租户ID、token过期时间、用户类别对应的密钥,生成token和Refresh Token,具体包括以下步骤:
将用户ID和所属的租户ID、token过期时间组拼成JSON,维护配置列表用于存储用户类别与对应的密钥;通过获取登陆接口定义的用户类别获取对应的密钥,采用获取的密钥对拼装的JSON字符串做DES加密,生成token和Refresh Token,token用于登陆验证,Refresh Token用于重新获取token。
在上述技术方案的基础上,通过解析出的用户ID及租户ID查询用户权限表,根据对应的权限信息调用本地缓存中的资源服务,具体包括以下步骤:
通过解析出的用户ID及租户ID,调用本地缓存中的资源服务,获取相应的权限服务,如果缓存中没有,调用用户权限表获取该用户的所有的角色集合和权限信息,获取后返回并放入缓存;
获取当前的用户请求URL和请求方式,与获取的缓存中的权限信息进行匹配;如果匹配成功,则该用户请求具有该接口的访问权限,反之,直接返回错误信息给客户端;
权限验证通过后,获取用户请求中的参数信息,将参数信息加入租户ID并重新组装加入用户请求中。
在上述技术方案的基础上,所述方法还包括以下步骤:
第三方应用需登陆平台认证服务器时,通过DES进行加密生成相应的token;
第三方应用需访问平台网关服务器获取资源时,将生成的token以及用户类别发送至平台认证服务器进行保存,并设置第三方用户权限表,第三方用户权限表用于存储租户ID及对应的第三方平台类型、用户角色和权限信息。
本发明还提供一种基于微服务多租户的接口鉴权、权限验证系统,包括:
权限服务模块,其用于:维护用户权限表,用户权限表用于存储租户ID及对应的用户ID、用户角色、应用、权限信息;
平台认证服务器,其用于:用户通过登陆接口登陆平台认证服务器时,获取用户ID、密码和用户类别并验证密码,若验证通过,根据用户ID和所属的租户ID、token过期时间、用户类别对应的密钥,生成token和Refresh Token;并根据用户ID和租户ID查询所述用户权限表获取用户对应的角色集合和权限信息,将用户的角色集合、权限信息和token、用户类别拼装成JSON字符串返回给客户端;
平台网关服务器,其用于:用户通过请求接口发起获取资源服务的用户请求时,获取用户请求中的用户类别和token,通过用户类别对token进行解密操作,如果解密成功则返回用户ID及租户ID,通过解析出的用户ID及租户ID查询用户权限表,根据对应的权限信息调用本地缓存中的资源服务。
在上述技术方案的基础上,所述权限信息包括资源名称、资源编码、接口URL的集合。
在上述技术方案的基础上,所述平台认证服务器根据用户ID和所属的租户ID、token过期时间、用户类别对应的密钥,生成token和Refresh Token,具体包括以下步骤:
将用户ID和所属的租户ID、token过期时间组拼成JSON,维护配置列表用于存储用户类别与对应的密钥;通过获取登陆接口定义的用户类别获取对应的密钥,采用获取的密钥对拼装的JSON字符串做DES加密,生成token和Refresh Token,token用于登陆验证,Refresh Token用于重新获取token。
在上述技术方案的基础上,所述平台网关服务器通过解析出的用户ID及租户ID查询用户权限表,根据对应的权限信息调用本地缓存中的资源服务,具体包括以下步骤:
通过解析出的用户ID及租户ID,调用本地缓存中的资源服务,获取相应的权限服务,如果缓存中没有,调用用户权限表获取该用户的所有的角色集合和权限信息,获取后返回并放入缓存;
获取当前的用户请求URL和请求方式,与获取的缓存中的权限信息进行匹配;如果匹配成功,则该用户请求具有该接口的访问权限,反之,直接返回错误信息给客户端;
权限验证通过后,获取用户请求中的参数信息,将参数信息加入租户ID并重新组装加入用户请求中。
在上述技术方案的基础上,所述平台认证服务器还用于:第三方应用需登陆平台认证服务器时,通过DES进行加密生成相应的token;
所述权限服务模块还用于:维护第三方应用权限表,第三方应用权限表用于存储租户ID及对应的第三方应用类别、用户ID、用户角色和权限信息;
所述平台网关服务器还其用于:第三方应用通过请求接口发起获取资源服务的用户请求时,获取用户请求中的第三方应用类别和token,通过用户类别对token进行解密操作,如果解密成功则返回租户ID,通过解析出的租户ID查询第三方应用权限表,根据对应的权限信息调用本地缓存中的资源服务。
本发明提供的技术方案带来的有益效果包括:
本发明可供不同的终端以及不同的应用进行调用提高了接口的维护性,只需维护接口版本等即可,同时方便终端业务的集成式开发,无需关注后台开发,只需要对前端做相应的开发即可,可适用于前端后端分离的开发模式。同时,本发明采用无状态登陆方式验证,天然支持单点登陆,方便子系统的相互集成,而且没有单点登陆瓶颈;然而在性能方面,权限认证进行抽离通过网关进行独立部署运行结合分布式缓存,无需频繁关注数据库的交互的性能瓶颈,大大提高资源访问的安全及性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例的基于微服务多租户的接口鉴权、权限验证方法的流程示意图;
图2是本发明实施例的基于微服务多租户的接口鉴权、权限验证方法的平台认证服务的流程示意图;
图3是本发明实施例的基于微服务多租户的接口鉴权、权限验证方法的接口权限设置的示意图;
图4是本发明实施例的基于微服务多租户的接口鉴权、权限验证方法的平台网关服务的流程示意图。
具体实施方式
以下结合附图对本发明的实施例作进一步详细说明。
参见图1所示,本发明实施例提供一种基于微服务多租户的接口鉴权、权限验证方法,具体包括以下步骤:
设置用户权限表,用户权限表用于存储租户ID及对应的用户ID、用户角色、应用、权限信息;
用户通过登陆接口登陆平台认证服务器时,平台认证服务器获取用户ID、密码和用户类别并验证密码,若验证通过,根据用户ID和所属的租户ID、token过期时间、用户类别对应的密钥,生成token和Refresh Token;并根据用户ID和租户ID查询所述用户权限表获取用户对应的角色集合和权限信息,将用户的角色集合、权限信息和token、用户类别拼装成JSON字符串返回给客户端;
用户通过请求接口发起获取资源服务的用户请求时,用户请求中携带用户类别和token,平台网关服务器获取用户请求中的用户类别和token,通过用户类别对token进行解密操作,如果解密成功则返回用户ID及租户ID,通过解析出的用户ID及租户ID查询用户权限表,根据对应的权限信息调用本地缓存中的资源服务。
图1所示为用户登陆访问授权,资源权限验证的整体流程。面向用户群体分为平台用户以及第三方其他平台用户,可以同时访问平台的服务资源,从整体核心功能组件可分为认证服务,网关服务,资源服务三类。
详细实现流程包括以下步骤:
第一步:登陆流程,本平台用户通过PC网页,手机H5,小程序等终端进行登陆基于http调用平台认证服务的登陆授权接口。
参见图2所示,认证服务获取登陆的用户名和密码,以及定义用户类别A,之后查询用户服务接口先判断密码是否正确,如果不正确,则返回错误码,如果正确,则将用户服务接口获取到用户基本信息和所在的租户ID,token过期时间组拼成JSON。在认证服务中会维护一个配置列表用来维护登陆的用户类别与密钥字符串之间的关系,通过获取登陆接口定义的用户类别A获取对应的密钥,然后对前面拼装的JSON字符串做DES加密,最后生成token和Refresh Token,token用于登陆验证而Refresh Token用于重新获取token,防止token过期造成无法使用。除此之外根据用户登陆的客户端的需要,在返回token的同时会根据登陆的用户Id和租户ID查询权限数据服务获取用户的角色集合和权限Code集合,获取之后和token,用户类别标识拼装成JSON字符串基于http协议返回响应给用户客户端。
用户角色权限采用多租户权限的设计方式,多租户系统和传统应用系统相比,多租户系统每个租户的管理员拥有设置不同和最高的管理权限,同时可以管理自主创建的用户角色权限,权限范围不能大于其做高管理权限,相比起来实现更为复杂,最终权限都以用户的资源分配为主要,满足为不同用户角色提供不同的资源访问和操作权限,同时也作为平台核心的安全组件,可以让各租户管理员实时的进行管理,保证平台系统的资源安全性,设计结构如图3所示:
权限表设计主要应用于微服务架构体系,基于http请求规范的接口设计,将接口作为提供资源的唯一标识,对于用户具有哪些资源权限,可以当作具有哪些接口权限,用户及角色属于租户,不同的租户的用户和角色都不一样,不同租户的应用所拥有的权限也不一样,然后通过租户ID将权限表和应用,用户角色进行相应的关联,从而实现多租户的权限的分配以及验证。
第二步:验证流程,登陆成功之后,此时请求接口通过http方式进行交互,消息头中将带上用户标识+token信息,在后续的所有系统资源的请求访问过程中都会经过平台的网关服务,这时该请求将会经过的一系列的验证过程,细节流程图如图4所示:
所有的请求经过网关服务后,首先将获取消息头中的用户类别标识和token,获取之后会通过上述的认证服务进行验证token的合法性,由于认证服务中维护了用户类别标识和对应密钥的关系,这样就可以通过用户类别标识对token做相应的解密操作,如果解析成功则将返回给网关服务用户基本信息及租户ID等信息,如果没有返回任何数据,这时认为token解析失败;其次token验证成功后,通过解析出来的用户ID及租户ID,调用本地cache缓存服务,获取相应的权限服务,如果缓存中没有,这时将调用认证服务的数据权限服务获取该用户的所有的角色集合和权限集合,获取的资源接口权限信息组成主要包括资源名称,资源编码,接口URL的集合,请求方式是get/post/delete/put,获取后返回并放入缓存,然后在获取当前的请求URL和请求方式,与获取的权限集合相匹配。如果匹配成功,则该用户请求具有该接口的访问权限,反之,直接返回错误信息给客户端;最后权限验证通过之后,将获取请求IO中的参数信息,将统一进行解析,不管是get或者post,重构request对象类防止获取IO中的信息后进行清空操作,无法将请求参数传递到其他资源服务中,然后将参数信息加入租户ID键值信息重新组装放入request中,方便后续数据权限的流程做铺垫和SaaS的多租户架构的实现。
对于这种请求认证流程,除此之外还提供https方式接口支持,防止重放攻击等合法验证,鉴权方式并为非传统的session会话方式及有状态登陆方式进行认证,通过判断token对应的session是否存在来确定是否认证成功,而是通过无状态认证方式进行验证,客户端保存服务端加密并生成好的字符串token,在资源访问的过程中直接验证是否能正常解密然后来确定是否认证成功,此方式服务端无需开辟内存空间存储会话对应的用户信息,能天然支持单点登陆认证实现,同时也对高并发高可用具有很好的支持性,可以随意扩展服务资源数量,高效的承载大量客户端的使用请求,无需单独抽离服务会话对应的session内存到统一的缓存区域进行维护。
本发明实施例还支持第三方或者子应用用户访问。参见图5所示:
首先其他相关应用的认证服务完全满足,本平台认证服务授权登陆,通过DES进行加密生成相应的token;其实第三方应用需要提供生成token密钥信息以及用户类别标识到本平台进行保存同时进行双方约定,然后在平台系统中维护第三方平台类型,用户角色和权限的关系即可,如表1所示。
表1第三方平台用户权限表
主键ID | varchar |
平台类型 | varchar |
角色类型 | varchar |
权限编码 | varchar |
租户ID | varchar |
和平台本地用户认证的不同之处在于,获取权限集合将调用第三方用户角色及权限数据库表,同样将获取所拥有的权限集合。而后续流程与平台本地用户的认证流程一致,如图5所示。
本发明实施例还提供一种基于微服务多租户的接口鉴权、权限验证系统,包括:
权限服务模块,其用于:维护用户权限表,用户权限表用于存储租户ID及对应的用户ID、用户角色、应用、权限信息;其中,权限信息包括资源名称、资源编码、接口URL的集合。
平台认证服务器,其用于:用户通过登陆接口登陆平台认证服务器时,获取用户ID、密码和用户类别并验证密码,若验证通过,根据用户ID和所属的租户ID、token过期时间、用户类别对应的密钥,生成token和Refresh Token;并根据用户ID和租户ID查询所述用户权限表获取用户对应的角色集合和权限信息,将用户的角色集合、权限信息和token、用户类别拼装成JSON字符串返回给客户端;
平台网关服务器,其用于:用户通过请求接口发起获取资源服务的用户请求时,获取用户请求中的用户类别和token,通过用户类别对token进行解密操作,如果解密成功则返回用户ID及租户ID,通过解析出的用户ID及租户ID查询用户权限表,根据对应的权限信息调用本地缓存中的资源服务。
作为优选的实施方式,所述平台认证服务器根据用户ID和所属的租户ID、token过期时间、用户类别对应的密钥,生成token和Refresh Token,具体包括以下步骤:
将用户ID和所属的租户ID、token过期时间组拼成JSON,维护配置列表用于存储用户类别与对应的密钥;通过获取登陆接口定义的用户类别获取对应的密钥,采用获取的密钥对拼装的JSON字符串做DES加密,生成token和Refresh Token,token用于登陆验证,Refresh Token用于重新获取token。
作为优选的实施方式,所述平台网关服务器通过解析出的用户ID及租户ID查询用户权限表,根据对应的权限信息调用本地缓存中的资源服务,具体包括以下步骤:
通过解析出的用户ID及租户ID,调用本地缓存中的资源服务,获取相应的权限服务,如果缓存中没有,调用用户权限表获取该用户的所有的角色集合和权限信息,获取后返回并放入缓存;
获取当前的用户请求URL和请求方式,与获取的缓存中的权限信息进行匹配;如果匹配成功,则该用户请求具有该接口的访问权限,反之,直接返回错误信息给客户端;
权限验证通过后,获取用户请求中的参数信息,将参数信息加入租户ID并重新组装加入用户请求中。
作为优选的实施方式,所述平台认证服务器还用于:第三方应用需登陆平台认证服务器时,通过DES进行加密生成相应的token;
所述权限服务模块还用于:维护第三方应用权限表,第三方应用权限表用于存储租户ID及对应的第三方应用类别、用户ID、用户角色和权限信息;
所述平台网关服务器还其用于:第三方应用通过请求接口发起获取资源服务的用户请求时,获取用户请求中的第三方应用类别和token,通过用户类别对token进行解密操作,如果解密成功则返回租户ID,通过解析出的租户ID查询第三方应用权限表,根据对应的权限信息调用本地缓存中的资源服务。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (8)
1.一种基于微服务多租户的接口鉴权、权限验证方法,其特征在于,包括以下步骤:
设置用户权限表,用户权限表用于存储租户ID及对应的用户ID、用户角色、应用、权限信息;
用户通过登陆接口登陆平台认证服务器时,平台认证服务器获取用户ID、密码和用户类别并验证密码,若验证通过,根据用户ID和所属的租户ID、token过期时间、用户类别对应的密钥,生成token和Refresh Token;并根据用户ID和租户ID查询所述用户权限表获取用户对应的角色集合和权限信息,将用户的角色集合、权限信息和token、用户类别拼装成JSON字符串返回给客户端;
用户通过请求接口发起获取资源服务的用户请求时,用户请求中携带用户类别和token,平台网关服务器获取用户请求中的用户类别和token,通过用户类别对token进行解密操作,如果解密成功则返回用户ID及租户ID,通过解析出的用户ID及租户ID查询用户权限表,根据对应的权限信息调用本地缓存中的资源服务;
其中,通过解析出的用户ID及租户ID查询用户权限表,根据对应的权限信息调用本地缓存中的资源服务,具体包括以下步骤:
通过解析出的用户ID及租户ID,调用本地缓存中的资源服务,获取相应的权限服务,如果缓存中没有,调用用户权限表获取该用户的所有的角色集合和权限信息,获取后返回并放入缓存;
获取当前的用户请求URL和请求方式,与获取的缓存中的权限信息进行匹配;如果匹配成功,则该用户请求具有该接口的访问权限,反之,直接返回错误信息给客户端;
权限验证通过后,获取用户请求中的参数信息,将参数信息加入租户ID并重新组装加入用户请求中。
2.如权利要求1所述的方法,其特征在于:所述权限信息包括资源名称、资源编码、接口URL的集合。
3.如权利要求1所述的方法,其特征在于:根据用户ID和所属的租户ID、token过期时间、用户类别对应的密钥,生成token和Refresh Token,具体包括以下步骤:
将用户ID和所属的租户ID、token过期时间组拼成JSON,维护配置列表用于存储用户类别与对应的密钥;通过获取登陆接口定义的用户类别获取对应的密钥,采用获取的密钥对拼装的JSON字符串做DES加密,生成token和Refresh Token,token用于登陆验证,RefreshToken用于重新获取token。
4.如权利要求1所述的方法,其特征在于:所述方法还包括以下步骤:
第三方应用需登陆平台认证服务器时,通过DES进行加密生成相应的token;
第三方应用需访问平台网关服务器获取资源时,将生成的token以及用户类别发送至平台认证服务器进行保存,并设置第三方用户权限表,第三方用户权限表用于存储租户ID及对应的第三方平台类型、用户角色和权限信息。
5.一种基于微服务多租户的接口鉴权、权限验证系统,其特征在于,包括:
权限服务模块,其用于:维护用户权限表,用户权限表用于存储租户ID及对应的用户ID、用户角色、应用、权限信息;
平台认证服务器,其用于:用户通过登陆接口登陆平台认证服务器时,获取用户ID、密码和用户类别并验证密码,若验证通过,根据用户ID和所属的租户ID、token过期时间、用户类别对应的密钥,生成token和Refresh Token;并根据用户ID和租户ID查询所述用户权限表获取用户对应的角色集合和权限信息,将用户的角色集合、权限信息和token、用户类别拼装成JSON字符串返回给客户端;
平台网关服务器,其用于:用户通过请求接口发起获取资源服务的用户请求时,获取用户请求中的用户类别和token,通过用户类别对token进行解密操作,如果解密成功则返回用户ID及租户ID,通过解析出的用户ID及租户ID查询用户权限表,根据对应的权限信息调用本地缓存中的资源服务;
其中,所述平台网关服务器通过解析出的用户ID及租户ID查询用户权限表,根据对应的权限信息调用本地缓存中的资源服务,具体包括以下步骤:
通过解析出的用户ID及租户ID,调用本地缓存中的资源服务,获取相应的权限服务,如果缓存中没有,调用用户权限表获取该用户的所有的角色集合和权限信息,获取后返回并放入缓存;
获取当前的用户请求URL和请求方式,与获取的缓存中的权限信息进行匹配;如果匹配成功,则该用户请求具有该接口的访问权限,反之,直接返回错误信息给客户端;
权限验证通过后,获取用户请求中的参数信息,将参数信息加入租户ID并重新组装加入用户请求中。
6.如权利要求5所述的系统,其特征在于:所述权限信息包括资源名称、资源编码、接口URL的集合。
7.如权利要求5所述的系统,其特征在于:所述平台认证服务器根据用户ID和所属的租户ID、token过期时间、用户类别对应的密钥,生成token和Refresh Token,具体包括以下步骤:
将用户ID和所属的租户ID、token过期时间组拼成JSON,维护配置列表用于存储用户类别与对应的密钥;通过获取登陆接口定义的用户类别获取对应的密钥,采用获取的密钥对拼装的JSON字符串做DES加密,生成token和Refresh Token,token用于登陆验证,RefreshToken用于重新获取token。
8.如权利要求5所述的系统,其特征在于:所述平台认证服务器还用于:第三方应用需登陆平台认证服务器时,通过DES进行加密生成相应的token;
所述权限服务模块还用于:维护第三方应用权限表,第三方应用权限表用于存储租户ID及对应的第三方应用类别、用户ID、用户角色和权限信息;
所述平台网关服务器还其用于:第三方应用通过请求接口发起获取资源服务的用户请求时,获取用户请求中的第三方应用类别和token,通过用户类别对token进行解密操作,如果解密成功则返回租户ID,通过解析出的租户ID查询第三方应用权限表,根据对应的权限信息调用本地缓存中的资源服务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010367105.6A CN111586030B (zh) | 2020-04-30 | 2020-04-30 | 一种基于微服务多租户的接口鉴权、权限验证方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010367105.6A CN111586030B (zh) | 2020-04-30 | 2020-04-30 | 一种基于微服务多租户的接口鉴权、权限验证方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111586030A CN111586030A (zh) | 2020-08-25 |
CN111586030B true CN111586030B (zh) | 2022-06-17 |
Family
ID=72113181
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010367105.6A Active CN111586030B (zh) | 2020-04-30 | 2020-04-30 | 一种基于微服务多租户的接口鉴权、权限验证方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111586030B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112019543A (zh) * | 2020-08-27 | 2020-12-01 | 四川长虹电器股份有限公司 | 一种基于brac模型的多租户权限系统 |
CN112153012B (zh) * | 2020-09-01 | 2021-07-06 | 珠海市卓轩科技有限公司 | 多端触点接入方法、装置及存储介质 |
CN112073501A (zh) * | 2020-09-02 | 2020-12-11 | 浪潮云信息技术股份公司 | 一种租户分离的纳管方法 |
CN112632513B (zh) * | 2020-12-29 | 2024-01-12 | 光大兴陇信托有限责任公司 | 一种基于前后端分离的身份认证实现方法 |
CN112822175B (zh) * | 2020-12-31 | 2022-06-28 | 联想(北京)有限公司 | 一种信息访问方法、装置及电子设备 |
CN112905918A (zh) * | 2021-03-06 | 2021-06-04 | 上海数依数据科技有限公司 | 一种数据服务汇聚引擎及其管理方法 |
CN113343150A (zh) * | 2021-06-24 | 2021-09-03 | 平安普惠企业管理有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN114826749A (zh) * | 2022-04-30 | 2022-07-29 | 济南浪潮数据技术有限公司 | 一种接口访问控制方法、装置、介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104717651A (zh) * | 2013-12-13 | 2015-06-17 | 华为技术有限公司 | 租户切换方法及装置 |
CN109981561A (zh) * | 2019-01-17 | 2019-07-05 | 华南理工大学 | 单体架构系统迁移到微服务架构的用户认证方法 |
CN110198301A (zh) * | 2019-03-26 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 一种服务数据获取方法、装置及设备 |
CN111030828A (zh) * | 2019-12-19 | 2020-04-17 | 中国电建集团华东勘测设计研究院有限公司 | 微服务架构下的权限控制方法、系统和访问令牌 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017004301A (ja) * | 2015-06-11 | 2017-01-05 | キヤノン株式会社 | 認証サーバーシステム、方法、プログラムおよび記憶媒体 |
-
2020
- 2020-04-30 CN CN202010367105.6A patent/CN111586030B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104717651A (zh) * | 2013-12-13 | 2015-06-17 | 华为技术有限公司 | 租户切换方法及装置 |
CN109981561A (zh) * | 2019-01-17 | 2019-07-05 | 华南理工大学 | 单体架构系统迁移到微服务架构的用户认证方法 |
CN110198301A (zh) * | 2019-03-26 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 一种服务数据获取方法、装置及设备 |
CN111030828A (zh) * | 2019-12-19 | 2020-04-17 | 中国电建集团华东勘测设计研究院有限公司 | 微服务架构下的权限控制方法、系统和访问令牌 |
Also Published As
Publication number | Publication date |
---|---|
CN111586030A (zh) | 2020-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111586030B (zh) | 一种基于微服务多租户的接口鉴权、权限验证方法及系统 | |
CN108173850B (zh) | 一种基于区块链智能合约的身份认证系统和身份认证方法 | |
US11252140B2 (en) | Systems and methods for securely calling APIs on an API gateway from applications needing first party authentication | |
US8990911B2 (en) | System and method for single sign-on to resources across a network | |
CN106209726B (zh) | 一种移动应用单点登录方法及装置 | |
CN102638454B (zh) | 一种面向http身份鉴别协议的插件式单点登录集成方法 | |
Miculan et al. | Formal analysis of Facebook Connect single sign-on authentication protocol | |
CN101426009A (zh) | 身份管理平台、业务服务器、统一登录系统及方法 | |
CN109150800B (zh) | 一种登录访问方法、系统和存储介质 | |
CN108111518B (zh) | 一种基于安全密码代理服务器的单点登录方法及系统 | |
CN114928460A (zh) | 一种基于微服务架构的多租户应用集成框架系统 | |
CN114338242A (zh) | 一种基于区块链技术的跨域单点登录访问方法及系统 | |
CN112565236B (zh) | 信息鉴权方法、装置、计算机设备及存储介质 | |
CN109274699A (zh) | 鉴权方法、装置、服务器及存储介质 | |
CN105681291B (zh) | 一种实现多客户端统一认证方法及系统 | |
CN115118454A (zh) | 一种基于移动应用的级联认证系统及认证方法 | |
CN113420336A (zh) | 一种分布式预言机实现方法及系统 | |
CN112822007B (zh) | 一种用户认证方法、装置及设备 | |
JP6383293B2 (ja) | 認証システム | |
CN108768965A (zh) | 一种教育云开放服务应用集成系统及方法 | |
CN117331964B (zh) | 数据查询方法、装置、设备及存储介质 | |
CN113973017B (zh) | 一种商业智能平台数据处理系统及方法 | |
US11416586B2 (en) | Secure communication application registration process | |
Tanmoy | Single Sign-On Feature for Customer Life-Cycle Management Application | |
Daniëls | API integration development: case Lyyti RESTful API |
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 |