CN115396180A - 微服务网关统一认证方法、装置、微服务网关及存储介质 - Google Patents
微服务网关统一认证方法、装置、微服务网关及存储介质 Download PDFInfo
- Publication number
- CN115396180A CN115396180A CN202211013864.8A CN202211013864A CN115396180A CN 115396180 A CN115396180 A CN 115396180A CN 202211013864 A CN202211013864 A CN 202211013864A CN 115396180 A CN115396180 A CN 115396180A
- Authority
- CN
- China
- Prior art keywords
- authentication
- authentication token
- service
- cache
- micro
- 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
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/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
- H04L12/00—Data switching networks
- H04L12/66—Arrangements for connecting between networks having differing types of switching systems, e.g. gateways
-
- 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/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
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)
- Computer And Data Communications (AREA)
Abstract
本公开提供一种微服务网关统一认证方法,接收被同步的认证定义;基于该认证定义,如果确定接收到第一客户端的认证请求,将认证请求发送给第一微服务应用,并从第一微服务应用所返回的响应体中解析得到认证令牌;对认证令牌进行解析得到认证令牌的认证令牌相关信息,并存储至分布式缓存中;基于该认证定义,如果确定接收到第二客户端的业务接口请求,从业务接口请求中获取目标认证令牌,并解析目标认证令牌;以目标认证令牌的解析结果查询分布式缓存,在查询到目标认证令牌的认证令牌相关信息的情况下,在业务接口请求中增加解析结果中的业务信息;将增加业务信息后的业务接口请求发送给第二微服务应用,并将业务接口请求响应发送给第二客户端。
Description
技术领域
本公开涉及软件技术领域,更具体地说,涉及一种微服务网关统一认证方法、装置、微服务网关及存储介质。
背景技术
微服务网关作为系统的边界,可以对出入系统的流量做统一的管控。入口网关作为经常被使用的网关种类,被部署在负载均衡服务器和应用服务器之间。
当前业界普遍采用的微服务网关统一认证方案为:1)客户端统一通过微服务网关发送认证请求,微服务网关将该认证请求转发给部署于应用服务上的独立的认证服务,认证服务通过访问用户数据库执行客户端认证逻辑,如认证成功向客户端返回生成的JWT认证令牌。2)客户端统一通过微服务网关发送业务接口访问请求时,在请求头部携带JWT认证令牌,微服务网关通过运维人员预先定义的JWT认证令牌解析配置(与认证服务中JWT认证令牌的生成逻辑保持一致),校验该JWT认证令牌的有效性,如校验成功,根据配置解析JWT认证令牌中的负载键值,将其加到请求头部中,并将该请求转发给指定的网关下游微服务应用,上述负载键值通常用来存储业务信息(如用户ID),供业务微服务应用执行业务逻辑时使用。
但是,当前的微服务网关统一认证方案主要存在以下问题:在一个复杂的微服务业务系统中,各业务微服务应用的认证方式往往差异性很大,这体现在存储认证信息的数据源不同,认证请求需提供的认证信息也不同,因此难以在一个独立的认证服务中实现满足所有业务服务认证需求的认证接口,即使实现了,也会涉及到业务微服务应用原有认证逻辑的重构,引入了额外的开发成本。
发明内容
有鉴于此,为解决上述问题,本公开提供一种微服务网关统一认证方法、装置、微服务网关及存储介质,技术方案如下:
一种微服务网关统一认证方法,所述方法应用于微服务网关,所述方法包括:
接收被同步的认证定义,所述认证定义包括业务微服务应用认证接口信息、认证令牌响应体解析模式和认证令牌校验定义;
如果基于所述业务微服务应用认证接口信息确定接收到第一客户端的认证请求,将所述认证请求发送给相应的第一微服务应用,并基于所述认证令牌响应体解析模式从所述第一微服务应用所返回的响应体中解析得到认证令牌;基于所述认证令牌校验定义对所述认证令牌进行解析得到所述认证令牌的认证令牌相关信息,并将所述认证令牌的认证令牌相关信息存储至分布式缓存中;
如果基于所述业务微服务应用认证接口信息确定接收到第二客户端的业务接口请求,基于所述认证令牌校验定义从所述业务接口请求中获取目标认证令牌,并解析所述目标认证令牌;以所述目标认证令牌的解析结果查询所述分布式缓存,并在所述分布式缓存中查询到所述目标认证令牌的认证令牌相关信息的情况下,在所述业务接口请求的HTTP头部中增加所述解析结果中的业务信息;将增加业务信息后的业务接口请求发送给相应的第二微服务应用,并将所述第二微服务应用返回的业务接口请求响应发送给所述第二客户端。
可选的,所述接收被同步的认证定义,包括:
在所述微服务网关启动或者所述认证定义被更新的情况下,接收被同步的所述认证定义。
可选的,所述将所述认证令牌的认证令牌相关信息存储至分布式缓存中,包括:
从所述认证令牌的认证令牌相关信息中获取第一缓存数据和第二缓存数据,将所述第一缓存数据和所述第二缓存数据存储至所述分布式缓存中;
其中,所述第一缓存数据的缓存键为所述第一微服务应用的应用名称与所述第一客户端的用户ID的字符串拼接值、缓存值为所述认证令牌的Base64编码、缓存过期时间为所述认证令牌的过期时间;所述第二缓存数据的缓存键为所述第一微服务应用的应用名称与所述认证令牌的Base64编码的字符串拼接值、缓存值为当前时间戳、缓存过期时间为所述认证令牌的过期时间;
相应的,所述以所述目标认证令牌的解析结果查询所述分布式缓存,包括:
以所述第二微服务应用的应用名称与所述目标认证令牌的Base64编码的字符串拼接值作为缓存键,查询所述分布式缓存中的所述第二缓存数据。
可选的,所述方法还包括:
如果所述认证令牌校验定义被配置有需要支持单设备登录特性、且所述分布式缓存中已存在所述第一缓存数据和所述第二缓存数据,更新所述第一缓存数据、删除所述第二缓存数据,并生成新的第二缓存数据存储至所述分布式缓存中。
可选的,所述方法还包括:
如果确定接收到第二客户端的登出请求,从所述登出请求中获取所述第二微服务应用的应用名称与所述目标认证令牌,将所述第二微服务应用的应用名称与所述目标认证令牌的Base64编码的字符串拼接值作为缓存键,并从所述分布式缓存中删除该缓存键;向所述第二客户端返回登出响应。
一种微服务网关统一认证装置,所述装置包括:
客户端认证模块,用于接收被同步的认证定义,所述认证定义包括业务微服务应用认证接口信息、认证令牌响应体解析模式和认证令牌校验定义;如果基于所述业务微服务应用认证接口信息确定接收到第一客户端的认证请求,将所述认证请求发送给相应的第一微服务应用,并基于所述认证令牌响应体解析模式从所述第一微服务应用所返回的响应体中解析得到认证令牌;基于所述认证令牌校验定义对所述认证令牌进行解析得到所述认证令牌的认证令牌相关信息,并将所述认证令牌的认证令牌相关信息存储至分布式缓存中;
客户端业务处理模块,用于如果基于所述业务微服务应用认证接口信息确定接收到第二客户端的业务接口请求,基于所述认证令牌校验定义从所述业务接口请求中获取目标认证令牌,并解析所述目标认证令牌;以所述目标认证令牌的解析结果查询所述分布式缓存,并在所述分布式缓存中查询到所述目标认证令牌的认证令牌相关信息的情况下,在所述业务接口请求的HTTP头部中增加所述解析结果中的业务信息;将增加业务信息后的业务接口请求发送给相应的第二微服务应用,并将所述第二微服务应用返回的业务接口请求响应发送给所述第二客户端。
可选的,用于将所述认证令牌的认证令牌相关信息存储至分布式缓存中的所述客户端认证模块,具体用于:
从所述认证令牌的认证令牌相关信息中获取第一缓存数据和第二缓存数据,将所述第一缓存数据和所述第二缓存数据存储至所述分布式缓存中;
其中,所述第一缓存数据的缓存键为所述第一微服务应用的应用名称与所述第一客户端的用户ID的字符串拼接值、缓存值为所述认证令牌的Base64编码、缓存过期时间为所述认证令牌的过期时间;所述第二缓存数据的缓存键为所述第一微服务应用的应用名称与所述认证令牌的Base64编码的字符串拼接值、缓存值为当前时间戳、缓存过期时间为所述认证令牌的过期时间;
相应的,用于以所述目标认证令牌的解析结果查询所述分布式缓存的所述客户端业务处理模块,具体用于:
以所述第二微服务应用的应用名称与所述目标认证令牌的Base64编码的字符串拼接值作为缓存键,查询所述分布式缓存中的所述第二缓存数据。
可选的,所述客户端认证模块,还用于:
如果所述认证令牌校验定义被配置有需要支持单设备登录特性、且所述分布式缓存中已存在所述第一缓存数据和所述第二缓存数据,更新所述第一缓存数据、删除所述第二缓存数据,并生成新的第二缓存数据存储至所述分布式缓存中。
一种微服务网关,所述微服务网关包括:至少一个存储器和至少一个处理器;所述存储器存储有应用程序,所述处理器调用所述存储器存储的应用程序,所述应用程序用于实现微服务网关统一认证方法。
一种存储介质,所述存储介质存储有计算机程序代码,所述计算机程序代码执行时实现所述的微服务网关统一认证方法。
相较于现有技术,本公开实现的有益效果为:
本公开提供一种微服务网关统一认证方法、装置、微服务网关及存储介质,该微服务网关统一认证方法应用于微服务网关,接收被同步的认证定义,该认证定义包括业务微服务应用认证接口信息、认证令牌响应体解析模式和认证令牌校验定义;如果基于业务微服务应用认证接口信息确定接收到第一客户端的认证请求,将认证请求发送给第一微服务应用,并基于认证令牌响应体解析模式从第一微服务应用所返回的响应体中解析得到认证令牌;基于认证令牌校验定义对认证令牌进行解析得到认证令牌的认证令牌相关信息,并存储至分布式缓存中;如果基于业务微服务应用认证接口信息确定接收到第二客户端的业务接口请求,基于认证令牌校验定义从业务接口请求中获取目标认证令牌,并解析目标认证令牌;以目标认证令牌的解析结果查询分布式缓存,并在分布式缓存中查询到目标认证令牌的认证令牌相关信息的情况下,在业务接口请求中的HTTP头部中增加解析结果中的业务信息;将增加业务信息后的业务接口请求发送给相应的第二微服务应用,并将第二微服务应用返回的业务接口请求响应发送给第二客户端。
本发明通过将微服务网关直接接入各微服务应用的认证接口,并在微服务网关统一进行客户端认证,在不引入额外开发成本的前提下,解决了在负载的微服务业务系统入口,满足多种业务服务认证需求的难题。
附图说明
结合附图并参考以下具体实施方式,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。贯穿附图中,相同或相似的附图标记表示相同或相似的元素。应当理解附图是示意性的,原件和元素不一定按照比例绘制。
图1为当前业界普遍采用的微服务网关统一认证方案的流程示意图;
图2为本公开实施例提供的微服务网关统一认证方法的方法流程图;
图3为本公开实施例提供的运维人员配置认证定义的流程示意图;
图4为本公开实施例提供的客户端请求认证微服务应用的流程示意图;
图5为本公开实施例提供的更新分布式缓存中认证令牌相关信息的流程示意图;
图6为本公开实施例提供的客户端请求访问微服务业务接口的流程示意图;
图7为本公开实施例提供的客户端请求登录的流程示意图;
图8为本公开实施例提供的微服务网关统一认证方案的流程示意图;
图9为本公开实施例提供的微服务网关统一认证装置的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
在微服务分布式架构中,微服务网关是一种架构模式,它是将一些服务共有的功能整合在一起,独立部署为单独的一层,用来解决一些服务治理的问题。微服务网关作为系统的边界,可以对出入系统的流量做统一的管控。入口网关作为经常被使用的网关种类,被部署在负载均衡服务器和应用服务器之间,主要有几方面的作用:
1)提供给客户端一个统一的接入地址,微服务网关可以将用户的请求动态路由到不同的业务服务上,并且做一些必要的协议转换工作,通过对客户端屏蔽这些服务的部署地址以及协议的细节,给客户端的调用带来很大的便捷;
2)可以基于微服务网关实现一些服务治理的策略,比如服务的熔断、降级、流量控制和分流等等;
3)实现黑白名单,比如针对设备ID、用户IP、用户ID等维度的黑白名单;
4)在微服务网关实现统一的客户端的认证,减少客户端开发工作量。
JWT(JSON Web Token)是一个开放标准,它定义了一种以紧凑和自包含的方法,用于在双方之间安全地传输编码为JSON对象的信息。JWT认证令牌由三部分组成:头部、负载、签名。其中,头部描述JWT认证令牌的元数据,包含签名的算法、令牌类型;负载用来存放实际需要传递的数据;签名部分是对前两部分的签名,防止数据篡改。由于JWT认证令牌具有无状态、允许垮域访问、更适用于移动应用的特性,是目前基于微服务网关实现客户端认证时,最流行的认证令牌解决方案。
参见图1,图1为当前业界普遍采用的微服务网关统一认证方案的流程示意图,其包括认证流程和认证令牌校验流程。
继续参见图1中的认证流程。客户端统一通过微服务网关发送认证请求(即认证流程中客户端请求认证),微服务网关将该认证请求转发给部署于应用服务上的独立的网关认证服务(即认证流程中微服务网关发送客户端认证),网关认证服务通过访问用户数据库执行客户端认证逻辑,如认证成功向客户端返回生成的JWT认证令牌(即认证流程中网关认证服务生成认证令牌、微服务网关响应认证请求)。
继续参见图1中的认证令牌校验流程。客户端统一通过微服务网关发送业务接口访问请求时,在请求头部携带JWT认证令牌(即认证令牌校验流程中客户端向微服务网关请求访问业务接口(携带认证令牌));微服务网关通过运维人员预先定义的JWT认证令牌解析配置(与认证服务中JWT认证令牌的生成逻辑保持一致),校验该JWT认证令牌的有效性(即认证令牌校验流程中微服务网关校验认证令牌);如校验成功,微服务网关根据配置解析JWT认证令牌中的负载键值,将其加到请求头部中,并将该请求转发给指定的网关下游微服务应用,上述负载键值通常用来存储业务信息(如用户ID),供微服务应用执行业务逻辑时使用(即认证令牌校验流程中微服务网关通过header传递认证令牌中的业务信息给微服务应用A,微服务应用A响应请求、微服务网关响应请求)。
但是,当前的微服务网关统一认证方案存在以下问题:
1)在一个复杂的微服务业务系统中,各微服务应用的认证方式往往差异性很大,这体现在存储认证信息的数据源不同,认证请求需提供的认证信息也不同,因此难以在一个独立的认证服务中实现满足所有业务服务认证需求的认证接口,即使实现了,也会涉及到微服务应用原有认证逻辑的重构,引入了额外的开发成本。
2)由于JWT认证令牌自包含的特性,令牌的过期时间已经包含了在令牌本身的字符串中,无法在不修改JWT认证令牌字符串的情况下更新该令牌的过期时间,因此微服务网关无法实现已登录客户端的登出操作。客户端认证获得的JWT认证令牌,一旦生成,在该令牌的有效期内,无法对其进行强制失效操作,如果该令牌被泄露,可能会导致严重的安全问题。
3)对于某些对安全性要求较高的业务系统,需要支持单设备登录特性,即对于同一个账号,同一时间只能在一个设备上登录,若同时在其他设备登录,本设备的登录状态将会失效。然而,现有的方案无法实现单设备登录需求,一个账号可以同时在多个设备并行使用,造成安全风险。
所以,如何实现微服务网关的统一认证,支持接入不同业务系统差异化的认证接口,支持实现客户端的登出逻辑,支持单设备登录特性,目前看起来非常有必要。
为了解决上述问题,本发明提出一种微服务网关统一认证方案,支持接入不同业务系统差异化的认证接口,支持实现客户端的登出逻辑,支持单设备登录特性。
需要说明的是,本发明实施例中认证令牌即为JWT认证令牌。
参见图2,图2为本公开实施例提供的微服务网关统一认证方法的方法流程图,该微服务网关统一认证方法应用于微服务网关,该方法包括如下步骤:
S10,接收被同步的认证定义,认证定义包括业务微服务应用认证接口信息、认证令牌响应体解析模式和认证令牌校验定义。
本公开实施例可以在配置中心中部署网关认证管理服务,该网关认证管理服务用于在运维阶段供运维人员配置认证定义,该认证定义包括业务微服务应用认证接口信息、认证令牌响应体解析模式和认证令牌校验定义。在微服务网关启动或者认证定义被更新时,网关认证管理服务会将认证定义同步给微服务网关,供微服务网关在处理客户端认证时使用。
参见图3,图3为本公开实施例提供的运维人员配置认证定义的流程示意图。继续参见图3,在运维阶段,运维人员访问网关认证管理前端页面,点击新建认证定义按钮,首先填写业务微服务应用认证接口信息,再填写认证令牌响应体解析模式,最后填写认证令牌校验定义,点击保存按钮,以此调用后端服务,即网关认证管理服务。网关认证管理服务将保存该新建的认证定义并将该认证定义同步给微服务网关,其中,同步方式有两种:微服务网关启动时加载、微服务网关运行时更新。
其中,业务微服务应用认证接口信息的配置项包含:应用名称、接口HTTP方法、接口的网关路由路径;认证令牌响应体解析模式的配置项包含:响应体格式(JSON、XML、普通文本)、响应体解析模式(JSONPath、XPath、正则表达式);认证令牌校验定义的配置项包含:应用名称、认证令牌在请求中的HTTP头部名称、需通过认证才能访问的业务接口列表(接口HTTP方法、接口的网关路由路径)、JWT认证令牌密钥、JWT认证令牌中需解析并传递给下游服务的业务信息负载键名列表、是否需要支持单设备登录特性、表示用户ID的JWT认证令牌负载键名。
S20,如果基于业务微服务应用认证接口信息确定接收到第一客户端的认证请求,将认证请求发送给相应的第一微服务应用,并基于认证令牌响应体解析模式从第一微服务应用所返回的响应体中解析得到认证令牌;基于认证令牌校验定义对认证令牌进行解析得到认证令牌的认证令牌相关信息,并将认证令牌的认证令牌相关信息存储至分布式缓存中。
本公开实施例中,微服务应用通过微服务网关对外公开业务接口,一方面处理来自客户端的认证请求,根据业务定义执行认证逻辑,生成认证令牌并通过响应返回;另一方面,处理已通过微服务网关认证校验的业务接口请求,执行正常的业务逻辑并响应返回。
参见图4,图4为本公开实施例提供的客户端请求认证微服务应用的流程示意图。继续参见图4,客户端(即第一客户端)在请求访问受认证保护的微服务业务接口前,需要向微服务网关发送认证请求,请求认证该微服务应用(即第一微服务应用)。
微服务网关在接收到客户端的请求后,根据本地同步的认证定义中的业务微服务应用认证接口信息判断当前请求是否为认证请求,如果是认证请求,则将认证请求转发给相关的第一微服务应用(即图4中请求认证接口),由第一微服务应用执行认证逻辑,生成认证令牌并包含在响应体中(即图4中微服务应用生成认证令牌响应体),之后,微服务网关根据认证定义中的认证令牌响应体解析模式解析响应体中的认证令牌,然后,微服务网关根据认证定义中的认证令牌校验定义对认证令牌本身进行解析,在分布式缓存中新建或更新认证令牌相关信息,并向第一客户端返回响应认证请求。
具体实现过程中,步骤S20中“将认证令牌的认证令牌相关信息存储至分布式缓存中”可以采用如下步骤:
从认证令牌的认证令牌相关信息中获取第一缓存数据和第二缓存数据,将第一缓存数据和第二缓存数据存储至分布式缓存中;
其中,第一缓存数据的缓存键为第一微服务应用的应用名称与第一客户端的用户ID的字符串拼接值、缓存值为认证令牌的Base64编码、缓存过期时间为认证令牌的过期时间;第二缓存数据的缓存键为第一微服务应用的应用名称与认证令牌的Base64编码的字符串拼接值、缓存值为当前时间戳、缓存过期时间为认证令牌的过期时间。
本公开实施例中,可以在分布式缓存中新建或更新以下数据结构的缓存数据:
第一缓存数据——缓存键:应用名称与用户ID(Identity document)的字符串拼接值;缓存值:认证令牌的Base64编码;缓存过期时间:认证令牌的过期时间。
第二缓存数据——缓存键:应用名称与认证令牌的Base64编码的字符串拼接值;缓存值:当前时间戳;缓存过期时间:该认证令牌的过期时间。
需要说明的是,本公开实施例中分布式缓存用于存放认证令牌相关信息,这些信息是由微服务网关在客户端认证、登出操作时更新的,供校验客户端认证令牌有效性时使用。
在此基础上,为实现支持单设备的登录特性,本公开实施例还可以包括如下步骤:
如果认证令牌校验定义被配置有需要支持单设备登录特性、且分布式缓存中已存在第一缓存数据和第二缓存数据,更新第一缓存数据、删除第二缓存数据,并生成新的第二缓存数据存储至分布式缓存中。
本公开实施例中,如果本地同步的认证定义中的认证令牌校验定义指定了需要支持单设备登录特性,则微服务网关在操作分布式缓存前,可以首先生成第一缓存数据的缓存键,以该生成的缓存键在分布式缓存中查询相应的第一缓存数据;如果所生成的缓存键在分布式缓存中已存在,则说明第一缓存数据已存在于分布式缓存中;进而需要将应用名称与分布式缓存中已存在的第一缓存数据的缓存值进行字符串拼接得到第二缓存数据的缓存键,以所拼接的缓存键在分布式缓存中查询相应的第二缓存数据;如果所拼接的缓存键在分布式缓存中已存在,则说明第二缓存数据已存在于分布式缓存中;进一步,需要更新分布式缓存中第一缓存数据的缓存值,删除分布式缓存中的第二缓存数据、且生成新的第二缓存数据,以实现单设备登录特性。
举例来说,某一用户(假设该用户ID为user1)于第一时间第一次在设备1(假设为网站)登录目标应用(假设为app1),生成认证令牌token1,此时在分布式缓存中新建如下两个缓存数据:
第一缓存数据——app1-user1:base64_token1
第二缓存数据——app1-base64_token1:第一时间的当前时间戳。
后续,该用户于第二时间第二次在设备2(假设为手机应用)登录该目标应用(即app1),生成认证令牌token2。此时,首先生成缓存键“app1-user1”,以该缓存键“app1-user1”在分布式缓存中进行查询,发现第一缓存数据“app1-user1:base64_token1”已存在于分布式缓存中;进而,将目标应用的应用名称“app1”与分布式缓存中第一缓存数据的缓存值“base64_token1”进行字符串拼接得到缓存键“app1-base64_token1”,以该缓存键“app1-base64_token1”在分布式缓存中进行查询,发现第二缓存数据“app1-base64_token1:第一时间的当前时间戳”已存在于分布式缓存中。由此,
将第一缓存数据的缓存值“base64_token1”更新为“base64_token2”,此时,分布式缓存中第一缓存数据由“app1-user1:base64_token1”更新为“app1-user1:base64_token2”;
删除分布式缓存中的第二缓存数据“app1-base64_token1:第一时间的当前时间戳”,生成新的第二缓存数据“app1-base64_token2:第二时间的当前时间戳”,此时,分布式缓存中第二缓存数据由“app1-base64_token1:第一时间的当前时间戳”更新为“app1-base64_token2:第二时间的当前时间戳”。
参见图5,图5为本公开实施例提供的更新分布式缓存中认证令牌相关信息的流程示意图。继续参见图5,微服务网关解析认证令牌,判定是否需要支持单设备登录特征;如果否,则新建或更新第一缓存数据和第二缓存数据(即图5新建或更新缓存项、以及新建缓存项两个步骤);如果是,则拼接第一微服务应用的应用名称与第一客户端的用户ID得到缓存键A(即图5中拼接应用名称与用户ID,得到键A),以该键A在分布式缓存中查询相应的第一缓存数据;进而判定缓存键A(即图5中键A)是否在分布式缓存中存在,如果是,说明第一缓存数据已存在于分布式缓存中,则拼接第一微服务应用的应用名称与缓存键A的缓存值得到缓存键B(即图5中拼接应用名称与键A的缓存值,得到键B),以缓存键B在分布式缓存中查询相应的第二缓存数据;如果缓存键B存在于分布式缓存中,说明第二缓存数据已存在于分布式缓存中,此时从分布式缓存中删除缓存键B(即图5中从分布式缓存中删除键B),以删除相应的第二缓存数据,进而分布式缓存中第一缓存数据的缓存值,删除分布式缓存中的第二缓存数据、且新建第二缓存数据。需要说明的是,如果缓存键A在分布式缓存不存在,则直接新建或更新第一缓存数据和第二缓存数据。
S30,如果基于业务微服务应用认证接口信息确定接收到第二客户端的业务接口请求,基于认证令牌校验定义从业务接口请求中获取目标认证令牌,并解析目标认证令牌;以目标认证令牌的解析结果查询分布式缓存,并在分布式缓存中查询到目标认证令牌的认证令牌相关信息的情况下,在业务接口请求的HTTP头部中增加解析结果中的业务信息;将增加业务信息后的业务接口请求发送给相应的第二微服务应用,并将第二微服务应用返回的业务接口请求响应发送给第二客户端。
本公开实施例中,执行完上述认证操作,微服务网关会响应客户端的认证请求。
参见图6,图6为本公开实施例提供的客户端请求访问微服务业务接口的流程示意图。继续参见图6,客户端(即第二客户端,该第二客户端可以与第一客户端为同一客户端),在通过网关请求访问受认证保护的微服务业务接口时,需要在请求中携带上述步骤获得的认证令牌(即目标认证令牌)。微服务网关接收到请求后,首先根据本地同步的认证定义中的业务微服务应用认证接口信息判断当前请求是否为认证请求,如果否,则当前请求为业务接口请求,判断当前请求是否需要通过认证;如果是,微服务网关根据本地同步的认证定义中的认证令牌校验定义从业务接口请求中获取目标认证令牌,解析目标认证令牌(即图6中根据配置,从请求中获取认证令牌,解析认证令牌),查询分布式缓存以查询目标认证令牌的认证令牌相关信息,判断是否查询到目标认证令牌的认证令牌相关信息(即图6中令牌缓存数据存在);如果查询到,则微服务网关在业务接口请求的HTTP头部中增加业务信息(即图6中传递令牌中的业务信息),并增加业务信息后的业务接口请求发送给微服务应用(即第二微服务应用),由第二微服务应用处理业务接口请求;微服务网关获得第二微服务应用返回的业务接口请求响应并发送给第二客户端(即图6中微服务应用响应请求,微服务网关将响应请求返回给客户端,此为正常响应请求)。
需要说明的是,微服务网关如果判定当前请求为认证请求,则流程见图4,在此不再赘述;如果判定当前请求不需要通过认证,则直接将当前请求发送给微服务应用,由微服务应用处理业务接口请求,响应请求,微服务网关将响应请求返回给客户端,此为正常响应请求;如果判定令牌缓存数据不存在,则向客户端返回令牌无效响应。
具体实现过程中,在微服务网关在分布式缓存中新建或更新第一缓存数据和第二缓存数据的基础上,步骤S30中“以目标认证令牌的解析结果查询分布式缓存”可以采用如下步骤:
以第二微服务应用的应用名称与目标认证令牌的Base64编码的字符串拼接值作为缓存键,查询分布式缓存中的第二缓存数据。
本公开实施例中,微服务应用以应用名称与认证令牌的Base64编码的字符串拼接值作为缓存键查询分布式缓存;如果该缓存键不存在,微服务网关直接向第二客户端返回令牌无效响应;如果该缓存键存在,微服务网关将业务接口请求转发给下游的第二微服务应用。
在一些实施例中,为实现微服务网关处理客户端的登出请求,本公开实施例还可以包括如下步骤:
如果确定接收到第二客户端的登出请求,从登出请求中获取第二微服务应用的应用名称与目标认证令牌,将第二微服务应用的应用名称与目标认证令牌的Base64编码的字符串拼接值作为缓存键,并从分布式缓存中删除该缓存键;向第二客户端返回登出响应。
参见图7,图7为本公开实施例提供的客户端请求登录的流程示意图。继续参见图7,客户端(即第二客户端)在通过微服务网关请求登出指定业务微服务应用时,需要在请求(即登出请求)头部中携带应用名称与认证令牌(即目标认证令牌)。微服务网关接收到请求后,从登出请求中获取第二微服务应用的应用名称与目标认证令牌(即图7中从请求中获取应用名称与认证令牌)将第二微服务应用的应用名称与目标认证令牌的Base64编码的字符串拼接值作为缓存键,在分布式缓存中删除该缓存键,(即图7中更新认证令牌相关信息),获得分布式缓存返回的响应请求后向第二客户端返回登出响应(即图7中微服务网关向客户端返回响应登出请求)。
参见图8,图8为本公开实施例提供的微服务网关统一认证方案的流程示意图,包括认证流程、认证令牌校验流程和登出流程。认证流程、认证令牌校验流程和登出流程的具体实现可以参见以上描述,在此不再赘述。
需要说明的是,附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本公开实施例提供的微服务网关统一认证方法,对现有微服务网关统一认证方案存在的问题进行了有效解决,相比当前业界方案,优点如下:
1)通过将微服务网关直接接入各微服务应用的认证接口,并在网关统一进行客户端认证,在不引入额外开发成本的前提下,解决了在复杂的微服务业务系统入口,满足多种业务服务认证需求的难题。
2)支持客户端的登出操作,对已颁发的认证令牌进行强制失效操作,保证系统安全性,规避安全问题。
3)支持单设备登录操作,满足系统对于强安全性的需求。
本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。
应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括但不限于面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
基于上述实施例提供的微服务网关统一认证方法,本公开实施例则对应提供执行上述微服务网关统一认证方法的装置,该装置的结构示意图如图9所示,包括:
客户端认证模块10,用于接收被同步的认证定义,认证定义包括业务微服务应用认证接口信息、认证令牌响应体解析模式和认证令牌校验定义;如果基于业务微服务应用认证接口信息确定接收到第一客户端的认证请求,将认证请求发送给相应的第一微服务应用,并基于认证令牌响应体解析模式从第一微服务应用所返回的响应体中解析得到认证令牌;基于认证令牌校验定义对认证令牌进行解析得到认证令牌的认证令牌相关信息,并将认证令牌的认证令牌相关信息存储至分布式缓存中;
客户端业务处理模块20,用于如果基于业务微服务应用认证接口信息确定接收到第二客户端的业务接口请求,基于认证令牌校验定义从业务接口请求中获取目标认证令牌,并解析目标认证令牌;以目标认证令牌的解析结果查询分布式缓存,并在分布式缓存中查询到目标认证令牌的认证令牌相关信息的情况下,在业务接口请求的HTTP头部中增加解析结果中的业务信息;将增加业务信息后的业务接口请求发送给相应的第二微服务应用,并将第二微服务应用返回的业务接口请求响应发送给第二客户端。
可选的,用于接收被同步的认证定义的客户端认证模块10,具体用于:
在微服务网关启动或者认证定义被更新的情况下,接收被同步的认证定义。
可选的,用于将认证令牌的认证令牌相关信息存储至分布式缓存中的客户端认证模块10,具体用于:
从认证令牌的认证令牌相关信息中获取第一缓存数据和第二缓存数据,将第一缓存数据和第二缓存数据存储至分布式缓存中;
其中,第一缓存数据的缓存键为第一微服务应用的应用名称与第一客户端的用户ID的字符串拼接值、缓存值为认证令牌的Base64编码、缓存过期时间为认证令牌的过期时间;第二缓存数据的缓存键为第一微服务应用的应用名称与认证令牌的Base64编码的字符串拼接值、缓存值为当前时间戳、缓存过期时间为认证令牌的过期时间;
相应的,用于以目标认证令牌的解析结果查询分布式缓存的客户端业务处理模块20,具体用于:
以第二微服务应用的应用名称与目标认证令牌的Base64编码的字符串拼接值作为缓存键,查询分布式缓存中的第二缓存数据。
可选的,客户端认证模块10,还用于:
如果认证令牌校验定义被配置有需要支持单设备登录特性、且分布式缓存中已存在第一缓存数据和第二缓存数据,更新第一缓存数据、删除第二缓存数据,并生成新的第二缓存数据存储至分布式缓存中。
可选的,客户端业务处理模块20,还用于:
如果确定接收到第二客户端的登出请求,从登出请求中获取第二微服务应用的应用名称与目标认证令牌,将第二微服务应用的应用名称与目标认证令牌的Base64编码的字符串拼接值作为缓存键,并从分布式缓存中删除该缓存键;向第二客户端返回登出响应。
需要说明的是,本公开实施例中各模块的细化功能可以参见上述用户分布式鉴权方法实施例对应公开部分,在此不再赘述。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
基于上述实施例提供的微服务网关统一认证方法,本公开实施例还提供一种微服务网关,微服务网关包括至少一个存储器和至少一个处理器;存储器存储有应用程序,处理器调用存储器存储的应用程序,应用程序用于实现微服务网关统一认证方法。
基于上述实施例提供的微服务网关统一认证方法,本公开实施例还提供一种存储介质,其特征在于,存储介质存储有计算机程序代码,计算机程序代码执行时实现微服务网关统一认证方法。
在本公开的上下文中,存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。存储介质可以是机器可读信号介质或机器可读储存介质。存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
需要说明的是,本公开上述的存储介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何存储介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
上述存储介质可以是上述微服务网关中所包含的;也可以是单独存在,而未装配入该微服务网关中。
根据本公开的一个或多个实施例,提供了一种微服务网关统一认证方法,该方法应用于微服务网关,包括:
接收被同步的认证定义,认证定义包括业务微服务应用认证接口信息、认证令牌响应体解析模式和认证令牌校验定义;
如果基于业务微服务应用认证接口信息确定接收到第一客户端的认证请求,将认证请求发送给相应的第一微服务应用,并基于认证令牌响应体解析模式从第一微服务应用所返回的响应体中解析得到认证令牌;基于认证令牌校验定义对认证令牌进行解析得到认证令牌的认证令牌相关信息,并将认证令牌的认证令牌相关信息存储至分布式缓存中;
如果基于业务微服务应用认证接口信息确定接收到第二客户端的业务接口请求,基于认证令牌校验定义从业务接口请求中获取目标认证令牌,并解析目标认证令牌;以目标认证令牌的解析结果查询分布式缓存,并在分布式缓存中查询到目标认证令牌的认证令牌相关信息的情况下,在业务接口请求的HTTP头部中增加解析结果中的业务信息;将增加业务信息后的业务接口请求发送给相应的第二微服务应用,并将第二微服务应用返回的业务接口请求响应发送给第二客户端。
根据本公开的一个或多个实施例,提供了一种微服务网关统一认证方法,接收被同步的认证定义,包括:
在微服务网关启动或者认证定义被更新的情况下,接收被同步的认证定义。
根据本公开的一个或多个实施例,提供了一种微服务网关统一认证方法,将认证令牌的认证令牌相关信息存储至分布式缓存中,包括:
从认证令牌的认证令牌相关信息中获取第一缓存数据和第二缓存数据,将第一缓存数据和第二缓存数据存储至分布式缓存中;
其中,第一缓存数据的缓存键为第一微服务应用的应用名称与第一客户端的用户ID的字符串拼接值、缓存值为认证令牌的Base64编码、缓存过期时间为认证令牌的过期时间;第二缓存数据的缓存键为第一微服务应用的应用名称与认证令牌的Base64编码的字符串拼接值、缓存值为当前时间戳、缓存过期时间为认证令牌的过期时间;
相应的,以目标认证令牌的解析结果查询分布式缓存,包括:
以第二微服务应用的应用名称与目标认证令牌的Base64编码的字符串拼接值作为缓存键,查询分布式缓存中的第二缓存数据。
根据本公开的一个或多个实施例,提供了一种微服务网关统一认证方法,还包括:
如果认证令牌校验定义被配置有需要支持单设备登录特性、且分布式缓存中已存在第一缓存数据和第二缓存数据,更新第一缓存数据、删除第二缓存数据,并生成新的第二缓存数据存储至分布式缓存中。
根据本公开的一个或多个实施例,提供了一种微服务网关统一认证方法,还包括:
如果确定接收到第二客户端的登出请求,从登出请求中获取第二微服务应用的应用名称与目标认证令牌,将第二微服务应用的应用名称与目标认证令牌的Base64编码的字符串拼接值作为缓存键,并从分布式缓存中删除该缓存键;向第二客户端返回登出响应。
根据本公开的一个或多个实施例,提供了一种微服务网关统一认证装置,该装置包括:
客户端认证模块,用于接收被同步的认证定义,认证定义包括业务微服务应用认证接口信息、认证令牌响应体解析模式和认证令牌校验定义;如果基于业务微服务应用认证接口信息确定接收到第一客户端的认证请求,将认证请求发送给相应的第一微服务应用,并基于认证令牌响应体解析模式从第一微服务应用所返回的响应体中解析得到认证令牌;基于认证令牌校验定义对认证令牌进行解析得到认证令牌的认证令牌相关信息,并将认证令牌的认证令牌相关信息存储至分布式缓存中;
客户端业务处理模块,用于如果基于业务微服务应用认证接口信息确定接收到第二客户端的业务接口请求,基于认证令牌校验定义从业务接口请求中获取目标认证令牌,并解析目标认证令牌;以目标认证令牌的解析结果查询分布式缓存,并在分布式缓存中查询到目标认证令牌的认证令牌相关信息的情况下,在业务接口请求的HTTP头部中增加解析结果中的业务信息;将增加业务信息后的业务接口请求发送给相应的第二微服务应用,并将第二微服务应用返回的业务接口请求响应发送给第二客户端。
根据本公开的一个或多个实施例,提供了一种微服务网关统一认证装置,用于将认证令牌的认证令牌相关信息存储至分布式缓存中的客户端认证模块,具体用于:
从认证令牌的认证令牌相关信息中获取第一缓存数据和第二缓存数据,将第一缓存数据和第二缓存数据存储至分布式缓存中;
其中,第一缓存数据的缓存键为第一微服务应用的应用名称与第一客户端的用户ID的字符串拼接值、缓存值为认证令牌的Base64编码、缓存过期时间为认证令牌的过期时间;第二缓存数据的缓存键为第一微服务应用的应用名称与认证令牌的Base64编码的字符串拼接值、缓存值为当前时间戳、缓存过期时间为认证令牌的过期时间;
相应的,用于以目标认证令牌的解析结果查询分布式缓存的客户端业务处理模块,具体用于:
以第二微服务应用的应用名称与目标认证令牌的Base64编码的字符串拼接值作为缓存键,查询分布式缓存中的第二缓存数据。
根据本公开的一个或多个实施例,提供了微服务网关统一认证装置,客户端认证模块,还用于:
如果认证令牌校验定义被配置有需要支持单设备登录特性、且分布式缓存中已存在第一缓存数据和第二缓存数据,更新第一缓存数据、删除第二缓存数据,并生成新的第二缓存数据存储至分布式缓存中。
根据本公开的一个或多个实施例,提供了一种微服务网关,微服务网关包括:至少一个存储器和至少一个处理器;存储器存储有应用程序,处理器调用存储器存储的应用程序,应用程序用于实现微服务网关统一认证方法。
根据本公开的一个或多个实施例,提供了一种存储介质,存储介质存储有计算机程序代码,计算机程序代码执行时实现用户分布式鉴权方法。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。
虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实施例中。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实施例中。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (10)
1.一种微服务网关统一认证方法,其特征在于,所述方法应用于微服务网关,所述方法包括:
接收被同步的认证定义,所述认证定义包括业务微服务应用认证接口信息、认证令牌响应体解析模式和认证令牌校验定义;
如果基于所述业务微服务应用认证接口信息确定接收到第一客户端的认证请求,将所述认证请求发送给相应的第一微服务应用,并基于所述认证令牌响应体解析模式从所述第一微服务应用所返回的响应体中解析得到认证令牌;基于所述认证令牌校验定义对所述认证令牌进行解析得到所述认证令牌的认证令牌相关信息,并将所述认证令牌的认证令牌相关信息存储至分布式缓存中;
如果基于所述业务微服务应用认证接口信息确定接收到第二客户端的业务接口请求,基于所述认证令牌校验定义从所述业务接口请求中获取目标认证令牌,并解析所述目标认证令牌;以所述目标认证令牌的解析结果查询所述分布式缓存,并在所述分布式缓存中查询到所述目标认证令牌的认证令牌相关信息的情况下,在所述业务接口请求的HTTP头部中增加所述解析结果中的业务信息;将增加业务信息后的业务接口请求发送给相应的第二微服务应用,并将所述第二微服务应用返回的业务接口请求响应发送给所述第二客户端。
2.根据权利要求1所述的方法,其特征在于,所述接收被同步的认证定义,包括:
在所述微服务网关启动或者所述认证定义被更新的情况下,接收被同步的所述认证定义。
3.根据权利要求1所述的方法,其特征在于,所述将所述认证令牌的认证令牌相关信息存储至分布式缓存中,包括:
从所述认证令牌的认证令牌相关信息中获取第一缓存数据和第二缓存数据,将所述第一缓存数据和所述第二缓存数据存储至所述分布式缓存中;
其中,所述第一缓存数据的缓存键为所述第一微服务应用的应用名称与所述第一客户端的用户ID的字符串拼接值、缓存值为所述认证令牌的Base64编码、缓存过期时间为所述认证令牌的过期时间;所述第二缓存数据的缓存键为所述第一微服务应用的应用名称与所述认证令牌的Base64编码的字符串拼接值、缓存值为当前时间戳、缓存过期时间为所述认证令牌的过期时间;
相应的,所述以所述目标认证令牌的解析结果查询所述分布式缓存,包括:
以所述第二微服务应用的应用名称与所述目标认证令牌的Base64编码的字符串拼接值作为缓存键,查询所述分布式缓存中的所述第二缓存数据。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
如果所述认证令牌校验定义被配置有需要支持单设备登录特性、且所述分布式缓存中已存在所述第一缓存数据和所述第二缓存数据,更新所述第一缓存数据、删除所述第二缓存数据,并生成新的第二缓存数据存储至所述分布式缓存中。
5.根据权利要求3所述的方法,其特征在于,所述方法还包括:
如果确定接收到第二客户端的登出请求,从所述登出请求中获取所述第二微服务应用的应用名称与所述目标认证令牌,将所述第二微服务应用的应用名称与所述目标认证令牌的Base64编码的字符串拼接值作为缓存键,并从所述分布式缓存中删除该缓存键;向所述第二客户端返回登出响应。
6.一种微服务网关统一认证装置,其特征在于,所述装置包括:
客户端认证模块,用于接收被同步的认证定义,所述认证定义包括业务微服务应用认证接口信息、认证令牌响应体解析模式和认证令牌校验定义;如果基于所述业务微服务应用认证接口信息确定接收到第一客户端的认证请求,将所述认证请求发送给相应的第一微服务应用,并基于所述认证令牌响应体解析模式从所述第一微服务应用所返回的响应体中解析得到认证令牌;基于所述认证令牌校验定义对所述认证令牌进行解析得到所述认证令牌的认证令牌相关信息,并将所述认证令牌的认证令牌相关信息存储至分布式缓存中;
客户端业务处理模块,用于如果基于所述业务微服务应用认证接口信息确定接收到第二客户端的业务接口请求,基于所述认证令牌校验定义从所述业务接口请求中获取目标认证令牌,并解析所述目标认证令牌;以所述目标认证令牌的解析结果查询所述分布式缓存,并在所述分布式缓存中查询到所述目标认证令牌的认证令牌相关信息的情况下,在所述业务接口请求的HTTP头部中增加所述解析结果中的业务信息;将增加业务信息后的业务接口请求发送给相应的第二微服务应用,并将所述第二微服务应用返回的业务接口请求响应发送给所述第二客户端。
7.根据权利要求6所述的装置,其特征在于,用于将所述认证令牌的认证令牌相关信息存储至分布式缓存中的所述客户端认证模块,具体用于:
从所述认证令牌的认证令牌相关信息中获取第一缓存数据和第二缓存数据,将所述第一缓存数据和所述第二缓存数据存储至所述分布式缓存中;
其中,所述第一缓存数据的缓存键为所述第一微服务应用的应用名称与所述第一客户端的用户ID的字符串拼接值、缓存值为所述认证令牌的Base64编码、缓存过期时间为所述认证令牌的过期时间;所述第二缓存数据的缓存键为所述第一微服务应用的应用名称与所述认证令牌的Base64编码的字符串拼接值、缓存值为当前时间戳、缓存过期时间为所述认证令牌的过期时间;
相应的,用于以所述目标认证令牌的解析结果查询所述分布式缓存的所述客户端业务处理模块,具体用于:
以所述第二微服务应用的应用名称与所述目标认证令牌的Base64编码的字符串拼接值作为缓存键,查询所述分布式缓存中的所述第二缓存数据。
8.根据权利要求7所述的装置,其特征在于,所述客户端认证模块,还用于:
如果所述认证令牌校验定义被配置有需要支持单设备登录特性、且所述分布式缓存中已存在所述第一缓存数据和所述第二缓存数据,更新所述第一缓存数据、删除所述第二缓存数据,并生成新的第二缓存数据存储至所述分布式缓存中。
9.一种微服务网关,其特征在于,所述微服务网关包括:至少一个存储器和至少一个处理器;所述存储器存储有应用程序,所述处理器调用所述存储器存储的应用程序,所述应用程序用于实现权利要求1-5任意一项所述的微服务网关统一认证方法。
10.一种存储介质,其特征在于,所述存储介质存储有计算机程序代码,所述计算机程序代码执行时实现权利要求1-5任意一项所述的微服务网关统一认证方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211013864.8A CN115396180A (zh) | 2022-08-23 | 2022-08-23 | 微服务网关统一认证方法、装置、微服务网关及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211013864.8A CN115396180A (zh) | 2022-08-23 | 2022-08-23 | 微服务网关统一认证方法、装置、微服务网关及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115396180A true CN115396180A (zh) | 2022-11-25 |
Family
ID=84120464
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211013864.8A Pending CN115396180A (zh) | 2022-08-23 | 2022-08-23 | 微服务网关统一认证方法、装置、微服务网关及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115396180A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115801472A (zh) * | 2023-02-10 | 2023-03-14 | 武汉市幸运坐标信息技术有限公司 | 一种基于鉴权网关的权限管理方法及系统 |
CN116521745A (zh) * | 2023-07-04 | 2023-08-01 | 北京长亭科技有限公司 | 一种缓存方法以及装置 |
-
2022
- 2022-08-23 CN CN202211013864.8A patent/CN115396180A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115801472A (zh) * | 2023-02-10 | 2023-03-14 | 武汉市幸运坐标信息技术有限公司 | 一种基于鉴权网关的权限管理方法及系统 |
CN116521745A (zh) * | 2023-07-04 | 2023-08-01 | 北京长亭科技有限公司 | 一种缓存方法以及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108306877B (zh) | 基于node js的用户身份信息的验证方法、装置和存储介质 | |
US11340961B2 (en) | Dynamically integrating a client application with third-party services | |
US10484385B2 (en) | Accessing an application through application clients and web browsers | |
US20200007531A1 (en) | Seamless transition between web and api resource access | |
US9544288B2 (en) | Messaging gateway | |
US9887990B2 (en) | Protection of application passwords using a secure proxy | |
CN115396180A (zh) | 微服务网关统一认证方法、装置、微服务网关及存储介质 | |
CN110958237A (zh) | 一种权限校验的方法和装置 | |
US20200296085A1 (en) | Oauth2 saml token service | |
CN113271311B (zh) | 一种跨链网络中的数字身份管理方法及系统 | |
CN111651739B (zh) | 登录认证服务系统及方法、认证服务节点、电子设备 | |
CN111651747B (zh) | 登录票据同步系统及方法、相关设备 | |
CN112261172A (zh) | 服务寻址访问方法、装置、系统、设备及介质 | |
CN113742676B (zh) | 一种登录管理方法、装置、服务器、系统及存储介质 | |
CN112764726B (zh) | 一种数据合成的方法和装置 | |
US20120179840A1 (en) | System and method for distributed content transformation | |
CN114584381A (zh) | 基于网关的安全认证方法、装置、电子设备和存储介质 | |
US8689304B2 (en) | Multiple independent authentications for enhanced security | |
EP3502925B1 (en) | Computer system and method for extracting dynamic content from websites | |
US20070271229A1 (en) | System and method for data searching among multiple enterprise applications | |
CN113760993A (zh) | 业务数据查询方法、装置和电子设备 | |
US9038169B2 (en) | Method and system for managing and controlling direct access of an administrator to a computer system | |
CN115221525A (zh) | 漏洞扫描方法、装置、设备及存储介质 | |
US10348515B2 (en) | System and method for a building-integrated communications platform | |
CN112214500A (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 |