CN117834179A - 访问鉴权方法、装置、电子设备及存储介质 - Google Patents

访问鉴权方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN117834179A
CN117834179A CN202311561868.4A CN202311561868A CN117834179A CN 117834179 A CN117834179 A CN 117834179A CN 202311561868 A CN202311561868 A CN 202311561868A CN 117834179 A CN117834179 A CN 117834179A
Authority
CN
China
Prior art keywords
service
access request
access
authentication
filter
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
Application number
CN202311561868.4A
Other languages
English (en)
Inventor
刘婷
牛冠杰
靳星
付成
张鹏
赵静坤
周琼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Unicom Online Information Technology Co Ltd
Original Assignee
China Unicom Online Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by China Unicom Online Information Technology Co Ltd filed Critical China Unicom Online Information Technology Co Ltd
Priority to CN202311561868.4A priority Critical patent/CN117834179A/zh
Publication of CN117834179A publication Critical patent/CN117834179A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/50Network service management, e.g. ensuring proper service fulfilment according to agreements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/30Network architectures or network communication protocols for network security for supporting lawful interception, monitoring or retaining of communications or communication related information
    • H04L63/306Network architectures or network communication protocols for network security for supporting lawful interception, monitoring or retaining of communications or communication related information intercepting packet switched data communications, e.g. Web, Internet or IMS communications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0863Generation of secret information including derivation or calculation of cryptographic keys or passwords involving passwords or one-time passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3297Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving time stamps, e.g. generation of time stamps

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Technology Law (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明涉及访问鉴权方法、装置、电子设备及存储介质,该方法包括:接收来自外部服务的第一访问请求,并调用微服务网关作为第一访问请求的入口,第一访问请求为外部服务器通过统一资源定位器发出的访问内部服务资源的请求。调用过滤器根据第一访问请求对应的业务接口进行鉴权,并在第一访问请求鉴权通过后调用网关路由将第一访问请求转发至第一服务,第一服务基于第一访问请求反馈第一处理结果。基于第一处理结果,获取第一访问请求头中的验证标识符,并将验证标识符拼接为第二访问请求。调用拦截器判断第二访问请求中的验证标识符是否正确,并在验证标识符正确时,将第二访问请求转发至第二服务,第二服务基于第二访问请求反馈第二处理结果。

Description

访问鉴权方法、装置、电子设备及存储介质
技术领域
本发明涉及微服务技术领域,特别是涉及一种访问鉴权方法、装置、电子设备及存储介质。
背景技术
微服务是一种将单个web应用程序根据功能开发为多个“小型服务”的架构技术,通常每个“小型服务”独立部署到不同的服务器上,并且通过HTTP(HyperText TransferProtocol,超文本传输协议)资源API(Application Programming Interface,应用程序编程接口)等方式通信,通过微服务集群的形式构成整个web应用程序。在当前微服务架构体系下,访问微服务URL(Uniform Resource Locator,统一资源定位符)的形式有两种,一种是通过网关,例如微服务网关(Gateway、Zuul),配置路由到对应的服务,另一种通过feign接口进行内部服务的调用。
一个大型的微服务集群可能包含上百个微服务,而微服务之间通过互相调用的方式完成业务请求,当外部服务通过微服务网关(Gateway)请求访问内部服务时,由微服务网关(Gateway)转发到对应的微服务,为了保护访问的微服务免受恶意攻击和未授权访问资源,需要对访问鉴权。当这些内部微服务使用feign接口进行互相调用的时候,如果不对访问进行鉴权,则会导致不仅当前内部服务可以访问,其他服务也可以访问的情况发生,甚至外部服务访问请求也可以访问到该内部服务的资源。例如对数据库的删除操作访问,这类操作可能会带来较大的安全隐患。
目前,服务之间访问鉴权主要有以下几种方法,一种是基于API网关的接口认证(token)的鉴权方法,例如通过微服务网关(Gateway)结合Spring Security(SpringSecurity是基于spring的应用程序提供声明式安全保护的安全性框架)以及JWT(JSON WebToken,是一个开放的行业标准(RFC 7519),它定义了一种简洁的、自包含的协议格式,用于在通信双方传递json对象)技术实现认证鉴权。微服务网关(Gateway)提供API接口统一的访问入口点,以登录请求为例,当微服务网关(Gateway)接收到登录请求时,转发请求到对应的认证服务上,认证服务校验用户名和密码是否正确。校验通过,则用户登录成功,后台管理微服务签发JWT认证(JWT TOKEN)信息返回给用户。用户再次请求其他资源访问时,访问请求需携带认证(token)信息,微服务网关(Gateway)的过滤器解析认证(token)并对其进行校验,认证(token)合法,则鉴权通过,放行,否则,返回认证错误等提示至用户。另一种设置访问白名单,即将访问的服务所在的服务器IP地址,端口等信息放置在白名单内,校验访问方提供的信息是否在白名单中,若存在,则放行,不存在,则返回拒绝访问等错误信息。
但是,第一种方法基于API网关的接口认证token的鉴权方法,需要获取用户登录后的认证(token)信息,当服务之间以异步的形式调用时,认证信息可能会出现不在有效期的情况。例如调用服务A执行定时任务,定时任务调用服务B的更新数据操作,定时任务不会立即操作,需等待到规定的时间执行,此时,认证信息可能已经失效。服务A等待一段时间,再次请求服务B时无法鉴权,并且若接口提供给外部使用,不需要登录,此时放开认证信息校验,也可能会造成安全问题。第二种基于IP、端口白名单设置,这种方法只是简单的将请求方的IP、端口等信息与白名单中的信息进行校验,若请求方篡改或者伪造IP、端口等信息,则也可以通过信息校验,导致服务之间的访问存在较大安全隐患。
综上所述,现有的服务之间访问鉴权方法安全性较差。
发明内容
基于此,有必要针对上述技术问题,提供一种安全性较高的访问鉴权方法、装置、电子设备及存储介质。
本发明提供了一种访问鉴权方法,所述方法包括:
接收来自外部服务的第一访问请求,并调用微服务网关作为所述第一访问请求的入口,所述第一访问请求为所述外部服务器通过统一资源定位器发出的访问内部服务资源的请求;
调用过滤器根据所述第一访问请求对应的业务接口进行鉴权,并在所述第一访问请求鉴权通过后调用网关路由将所述第一访问请求转发至第一服务,所述第一服务用于基于所述第一访问请求反馈第一处理结果;
基于所述第一处理结果,获取所述第一访问请求头中的验证标识符,并将所述验证标识符拼接为第二访问请求;
调用拦截器判断所述第二访问请求中的验证标识符是否正确,并在所述验证标识符正确时,将所述第二访问请求转发至第二服务,所述第二服务用于基于所述第二访问请求反馈第二处理结果。
在其中一个实施例中,所述过滤器包括全局过滤器和路由过滤器,所述全局过滤器为已有过滤器,所述路由过滤器为配置路由对应的过滤器;
所述调用过滤器根据所述第一访问请求对应的业务接口进行鉴权,并在所述第一访问请求鉴权通过后调用网关路由将所述第一访问请求转发至第一服务,包括:
调用所述微服务网关查找与所述第一访问请求匹配的第一路由;
当所述第一路由断言可用时,创建过滤器链并调用所述过滤器链以获取所述第一访问请求匹配的路由过滤器。
在其中一个实施例中,所述调用过滤器根据所述第一访问请求对应的业务接口进行鉴权,并在所述第一访问请求鉴权通过后调用网关路由将所述第一访问请求转发至第一服务,还包括:
获取多个来自外部服务的所述第一访问请求,并按照获取时间先后对多个所述第一访问请求进行排序;
调用所述全局过滤器以及每个所述第一访问请求对应的所述路由过滤器按照排序对所述第一访问请求进行过滤,以确定可用的所述路由过滤器及其对应的所述第一访问请求。
在其中一个实施例中,所述基于所述第一处理结果,获取所述第一访问请求头中的验证标识符,并将所述验证标识符拼接为第二访问请求,之前还包括:
获取所述第一访问请求对应的加密参数,并将所述加密参数组成新的字符串,所述加密参数至少包括所述第一访问请求的外部服务地址、密钥以及时间戳;
将所述外部服务地址、密钥以及新的字符串进行拼接,以将所述新的字符串加密成所述验证标识码。
在其中一个实施例中,所述方法还包括:
当多个所述第一访问请求进入所述微服务网关时,判断所述第一服务是否基于所述第一访问请求反馈所述第一处理结果;若否,则
将无法反馈的所述第一服务对应的第一访问请求返回至外部服务,以对所述第一服务进行降级处理。
在其中一个实施例中,所述调用拦截器判断所述第二访问请求中的验证标识符是否正确,并在所述验证标识符正确时,将所述第二访问请求转发至第二服务,包括:
将所述验证标识符发送至所述拦截器,并调用所述拦截器判断所述验证标识符是否正确;若是,则
将所述第二访问请求发送至所述第二服务,并调用所述第二服务对所述第二访问请求进行处理,反馈所述第二处理结果;若否,则
将鉴权失败提示发送至所述外部服务,并禁止所述第二访问请求访问所述第二服务。
在其中一个实施例中,所述方法还包括:
接收来自第三服务的第三访问请求,所述第三服务为内部服务中的微服务,所述第三访问请求为所述内部服务中的各个所述微服务之间的访问请求;
基于所述第三访问请求,调用第四服务对所述第三访问请求进行处理,并反馈第三处理结果,所述第四服务为所述内部服务中区别于所述第三服务的其他任一微服务。
本发明还提供了一种访问鉴权装置,所述装置包括:
请求处理模块,用于接收来自外部服务的第一访问请求,并调用微服务网关作为所述第一访问请求的入口,所述第一访问请求为所述外部服务器通过统一资源定位器发出的访问内部服务资源的请求;
第一鉴权模块,用于调用过滤器根据所述第一访问请求对应的业务接口进行鉴权,并在所述第一访问请求鉴权通过后调用网关路由将所述第一访问请求转发至第一服务,所述第一服务用于基于所述第一访问请求反馈第一处理结果;
签名获取模块,用于基于所述第一处理结果,获取所述第一访问请求头中的验证标识符,并将所述验证标识符拼接为第二访问请求;
第二鉴权模块,用于调用拦截器判断所述第二访问请求中的验证标识符是否正确,并在所述验证标识符正确时,将所述第二访问请求转发至第二服务,所述第二服务用于基于所述第二访问请求反馈第二处理结果。
本发明还提供了一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现如上述任一种所述的访问鉴权方法。
本发明还提供了一种计算机存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述的访问鉴权方法。
上述访问鉴权方法、装置、电子设备及存储介质,通过接收来自外部服务器通过统一资源定位器发出的访问内部服务资源的访问请求,并调用微服务网关作为访问请求的统一入口。随后,调用过滤器根据访问请求对应的业务接口进行鉴权,并在访问请求鉴权通过后调用网关路由将访问请求转发至对应的服务,以使该服务基于该访问请求反馈相应的处理结果。然后,基于得到的处理结果,获取该访问请求头中的验证标识符,并将该验证标识符拼接为新的访问请求。之后调用拦截器判断该新的访问请求中的验证标识符是否正确,并在验证标识符正确时将该新的访问请求转发至对应的服务,以使该服务基于该新的访问请求反馈对应的处理结果。该方法使得服务之间使用约定的服务地址和密钥,并生成新的访问请求,当外部服务通过微服务网关访问内部服务资源时,调用过滤器对访问请求进行预处理鉴权,预处理后生成新的访问请求,最后调用拦截器对新的访问请求进行再次鉴权,实现了外部服务与内部服务间非认证信息鉴权,也无需设置白名单进行鉴权,在一定程度上提高了服务之间访问的安全性。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的访问鉴权方法流程示意图之一;
图2为本发明提供的具体实施例中访问鉴权方法的服务间访问鉴权过程示意图;
图3为本发明提供的访问鉴权方法流程示意图之二;
图4为本发明提供的访问鉴权方法流程示意图之三;
图5为本发明提供的访问鉴权方法流程示意图之四;
图6为本发明提供的访问鉴权方法流程示意图之五;
图7为本发明提供的访问鉴权方法流程示意图之六;
图8为本发明提供的访问鉴权方法流程示意图之七;
图9为本发明提供的访问鉴权装置结构示意图;
图10为本发明提供的计算机设备的内部结构图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地说明,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合图1-图10描述本发明的访问鉴权方法、装置、电子设备及存储介质。
如图1所示,在一个实施例中,一种访问鉴权方法,包括以下步骤:
步骤S110,接收来自外部服务的第一访问请求,并调用微服务网关作为第一访问请求的入口,第一访问请求为外部服务器通过统一资源定位器发出的访问内部服务资源的请求。
具体的,内部服务器接收来自外部服务通过统一资源定位器(URL)发出的访问内部服务资源的请求,即第一访问请求,并调用微服务网关(Gateway)作为该第一访问请求的统一入口。
结合图2所示,在具体的实施例中,服务间访问鉴权的过程分为两个部分,当外部服务通过URL(Uniform Resource Locator,统一资源定位器)请求访问内部服务资源时,内部服务器则会调用Spring Cloud Gateway(微服务网关)作为外部服务访问请求的统一入口,由微服务网关根据请求访问的业务接口进行鉴权。
步骤S120,调用过滤器根据第一访问请求对应的业务接口进行鉴权,并在第一访问请求鉴权通过后调用网关路由将第一访问请求转发至第一服务,第一服务用于基于第一访问请求反馈第一处理结果。
具体的,内部服务器在对来自外部服务的访问请求进行鉴权的过程中,首先调用过滤器根据访问请求对应的业务接口进行鉴权,并在访问请求鉴权通过后调用网关路由将访问请求转发至对应的服务,即第一服务,该服务用于基于该访问请求反馈相应的处理结果,即第一处理结果。
在具体的实施例中,由微服务网关(Spring Cloud Gateway)根据请求访问的业务接口进行鉴权,通过鉴权后,网关路由转发到对应的服务,否则,网关则会返回拒绝访问请求的提示。
其中,微服务网关是通过配置路由来对访问请求进行预处理和转发的,内部服务器收到访问请求后根据路由匹配到的条件找到满足条件的路由,访问请求经过该路由配置的过滤器处理以后转发到目标服务进行对应的业务处理,最后返回处理结果,而对访问请求的鉴权是在过滤器中进行的。以订单服务(order-service)的请求鉴权为例子,搭建Gateway网关鉴权包括以下步骤:
(1):配置路由,一个路由主要由以下几个属性组成:
(a)Id:路由ID:网关路由的服务id,即order-service。
(b)Uri:转发请求的目标地址,lb://order-service。
(c)Predicate:匹配条件。
(d)Filters:路由过滤器,与全局过滤器一起按照排序处理访问请求。
(2):全局过滤器实现获取验证标识符(sign)。访问请求经过路由配置后,根据匹配条件找到请求匹配的路由,此时RoutePredicateHandleMapping(负责路由查找,并根据路由断言判断对应路由是否可用)把访问请求交给FilteringWebHandle(创建过滤器链并调用)处理,FilteringWebHandle获取访问请求匹配到的路由过滤器,和全局过滤器一起,按照排序实现访问请求的过滤。重新实现全局过滤器(GlobalFilter),获取请求头(header)中的验证标识符(sign),重新拼接为新的访问请求(request)。
(3):Gateway网关熔断降级。在分布式系统中,网关作为外部服务访问请求的入口,当大量的访问请求进入网关时,网关经过路由转发到对应的服务。对应的服务不可避免的会出现调用失败的情况,比如超时,异常等。访问请求失败时,可能会堆积在网关上,则需要将访问失败的信息快速的返回给调用方,所以需要通过熔断、降级操作来实现:
首先在配置文件中配置熔断降级,在过滤器(Filters)属性下配置以下几个属性:
(a)-name:Hystrix,表示熔断机制的实现。
(b)args:name:fallbackcmd,表示HystrixCommand对象的名字。
(c)args:name:fallbackUri:forward:/fallback,表示触发熔断机制后的跳转链接,实现熔断降级后的网关Gateway的调用地址(调用方Controller)为:
@RequestMapping("/fallback")
public String gatewayFallback(){
return"{\"msg\":\"服务降级处理\",\"code\":500}";
}
(4):鉴权拦截器。访问请求经过全局过滤器,在进入调用方Controller之前,设置鉴权拦截器,全局过滤器拼接后的访问请求(request)作为拦截器的输入,首先获取访问请求(request)中的头(header)的验证标识符(sign),并判断验证标识符(sign)是否正确,正确,则返回鉴权通过的结果,否则,返回鉴权失败提示。
(5):服务注册、发现中心(nacos)。服务注册、发现中心(nacos)提供了服务注册、服务发现等功能,能够方便的实现微服务的注册和发现,网关Gateway负责把访问请求转发到目标微服务上,目标微服务通过nacos实现服务注册,网关Gateway通过nacos实现服务发现。网关Gateway的nacos配置如下:
目标微服务order-service的nacos配置如下:
nacos:
discovery:
server-addr:127.0.0.1:8848#注册中心地址
步骤S130,基于第一处理结果,获取第一访问请求头中的验证标识符,并将验证标识符拼接为第二访问请求。
具体的,服务器基于步骤S120中第一服务对鉴权通过的第一访问请求进行处理得到的第一处理结果,获取该鉴权通过的第一访问请求的验证标识符(sign),并将得到的验证标识符拼接为新的访问请求(request),即第二访问请求。
其中,验证标识符(sign),也可称为接口签名,加密接口可以使用对称式加密和非对称加密。对称加密包括:DES、AES、Base64。非对称加密:MD5和SHA256。主要加密不需要解密:MD5和SHA256。在本具体实施例中使用自定义加密算法,使用外部服务地址(appid)、密钥(secret)、时间戳(timestamp)等参数按照一定规则组成一个新的字符串,对这个字符串进行加密后得到sign的签名鉴权码,可以防止密钥泄漏,有效防止接口被篡改以及防止接口被重读提交。接口签名鉴权码sign生成包括以下步骤:
(1):把所有必要的参数组成一个新的字符串s:{a:1,b:2,c:3}。
(2):把appid和secret和字符串拼接。
例如:appid=123&secret=456&timestamp=?。
(3):对新得到的字符串进行加密得到sign。
为鉴权服务和调用服务约定地址(appid)、密钥(secret)以及一套加密算法。当鉴权服务获取到访问请求服务的地址(appid)以及接口签名鉴权码sign后,根据传过来的地址(appid)查询对应的密钥(secret),根据相关参数按照约定的算法生成sign,比较调用服务传过来的sign是否一致即可。若一致,则鉴权通过,否则,鉴权失败。这样的鉴权方式有效避免了基于认证信息(token)的鉴权,token实现的情况,以及满足了服务间非使用token的调用情况,并且与添加白名单相比,安全性更高。
步骤S140,调用拦截器判断第二访问请求中的验证标识符是否正确,并在验证标识符正确时,将第二访问请求转发至第二服务,第二服务用于基于第二访问请求反馈第二处理结果。
具体的,内部服务器调用拦截器判断步骤S130中拼接得到的第二访问请求(request)中的验证标识符(sign)是否正确,并在验证标识符正确时将第二访问请求转发至对应的微服务,即第二服务,该微服务用于基于该第二访问请求反馈相应的第二处理结果。
需要说明的是,对于内部各个微服务之间的调用来说,一般来说是不需要鉴权的,内部服务的访问请求可以直接处理。当各个微服务之间的请求是通过OpenFeign接口的方式调用时,数据是通过接口之间暴露出来的。在这种情况下,不只是内部服务之间可以调用,外部服务也可以直接调用该微服务,若该微服务涉及对数据库的删除等操作时,可能会带来极大的安全隐患。和网关转发到每一个微服务时的请求认证一样,在使用OpenFeign接口调用服务时,通过实现feign接口的访问请求拦截器接口(RequesrInterceptor)自定义一个OpenFeign接口拦截器,在OpenFeign接口拦截器中获取访问请求中的验证标识符(sign)以及地址(appid)等信息,并且将上文提到的Gateway网关鉴权拦截器封装为通用的鉴权模块,作为内部服务间调用时的鉴权,经过通用的鉴权拦截器,若鉴权成功,则通过,否则,返回鉴权失败信息。内部服务调用鉴权,OpenFeign接口拦截器获取验证标识符(sign)以及地址(appid)。具体实现如下所示:
HttpServletRequest request=((ServletRequestAttributes)requestAttributes).getRequest();
String sign=request.getHeader(“sign”);
String appId=request.getHeader(“appId”);
进一步需要说明的是,在具体的实施例中,当服务间进行调用的时候,有些接口并不需要鉴权,为了提高服务间调用的效率,可以使用自定义注解的形式,实现访问请求放行的功能,使得不需要鉴权的接口访问快速通过。SpringAop实现URL放行包括以下步骤:
(1)判断访问路径是否在白名单内。相关实现如下:
(2)忽略认证URL配置。在配置中实现查找访问路径是否存在白名单中的具体逻辑。具体实现如下:
(3)非鉴权URL数据表。由于微服务项目数量多,涉及的接口数量也多,可以将不需要鉴权的URL放置在数据表中,判断请求路径是否存在于数据表ignore_urls中,数据表ignore_urls如表1所示:
表1
id int 主键
serviceName varchar(255) 服务名
urls varchar(255) urls
上述访问鉴权方法,通过接收来自外部服务器通过统一资源定位器发出的访问内部服务资源的访问请求,并调用微服务网关作为访问请求的统一入口。随后,调用过滤器根据访问请求对应的业务接口进行鉴权,并在访问请求鉴权通过后调用网关路由将访问请求转发至对应的服务,以使该服务基于该访问请求反馈相应的处理结果。然后,基于得到的处理结果,获取该访问请求头中的验证标识符,并将该验证标识符拼接为新的访问请求。之后调用拦截器判断该新的访问请求中的验证标识符是否正确,并在验证标识符正确时将该新的访问请求转发至对应的服务,以使该服务基于该新的访问请求反馈对应的处理结果。该方法使得服务之间使用约定的服务地址和密钥,并生成新的访问请求,当外部服务通过微服务网关访问内部服务资源时,调用过滤器对访问请求进行预处理鉴权,预处理后生成新的访问请求,最后调用拦截器对新的访问请求进行再次鉴权,实现了外部服务与内部服务间非认证信息鉴权,也无需设置白名单进行鉴权,在一定程度上提高了服务之间访问的安全性。
如图3所示,在一个实施例中,本发明提供的访问鉴权方法,调用过滤器根据第一访问请求对应的业务接口进行鉴权,并在第一访问请求鉴权通过后调用网关路由将第一访问请求转发至第一服务,具体包括以下步骤:
步骤S122,调用微服务网关查找与第一访问请求匹配的第一路由。
具体的,内部服务器调用微服务网关(Spring Cloud Gateway)中的RoutePredicateHandleMapping查找与第一访问请求匹配的路由,即第一路由,第一路由为与第一访问请求匹配的路由。
步骤S124,当第一路由断言可用时,创建过滤器链并调用过滤器链以获取第一访问请求匹配的路由过滤器。
具体的,当步骤S122中查找到的第一路由断言可用时,通过FilteringWebHandle创建过滤器链并调用该过滤器链以获取第一访问请求匹配的路由过滤器。
如图4所示,在一个实施例中,本发明提供的访问鉴权方法,调用过滤器根据第一访问请求对应的业务接口进行鉴权,并在第一访问请求鉴权通过后调用网关路由将第一访问请求转发至第一服务,具体还包括以下步骤:
步骤S126,获取多个来自外部服务的第一访问请求,并按照获取时间先后对多个第一访问请求进行排序。
具体的,内部服务器获取多个来自外部服务的第一访问请求,并按照获取时间的先后对该多个第一访问请求进行排序。
步骤S128,调用全局过滤器以及每个第一访问请求对应的路由过滤器按照排序对第一访问请求进行过滤,以确定可用的路由过滤器及其对应的第一访问请求。
具体的,内部服务器调用全局过滤器以及每个第一访问请求对应的路由过滤器按照步骤S126中的排序对第一访问请求进行过滤,来确定可用的路由过滤器及其对应的第一访问请求。
如图5所示,在一个实施例中,本发明提供的访问鉴权方法,基于所述第一处理结果,获取所述第一访问请求头中的验证标识符,并将所述验证标识符拼接为第二访问请求,之前还包括以下步骤:
步骤S510,获取第一访问请求对应的加密参数,并将加密参数组成新的字符串,加密参数至少包括第一访问请求的外部服务地址、密钥以及时间戳。
具体的,内部服务器获取第一访问请求对应的加密参数,并将加密参数组成新的字符串,该加密参数至少包括第一访问请求的外部服务地址(appid)、密钥(secret)以及时间戳(timestamp)。
步骤S520,将外部服务地址、密钥以及新的字符串进行拼接,以将新的字符串加密成验证标识码。
具体的,内部服务器将步骤S510中得到的外部服务地址(appid)、密钥(secret)以及组成的新的字符串进行拼接,来将新的字符串加密成验证标识符(sign)。
如图6所示,在一个实施例中,本发明提供的访问鉴权方法,还包括以下步骤:
步骤S610,当多个第一访问请求进入微服务网关时,判断第一服务是否基于第一访问请求反馈第一处理结果。
具体的,当多个第一访问请求进入微服务网关时,内部服务器会判断第一服务是否基于第一访问请求反馈第一处理结果。
步骤S620,将无法反馈的第一服务对应的第一访问请求返回至外部服务,以对第一服务进行降级处理。
具体的,若步骤S610中的判断结果为第一服务没有基于第一访问请求反馈对应的第一处理结果,内部服务器则会将无法反馈的第一服务对应的第一访问请求返回至调用方,来对第一服务进行降级处理。
如图7所示,在一个实施例中,本发明提供的访问鉴权方法,调用拦截器判断第二访问请求中的验证标识符是否正确,并在验证标识符正确时,将第二访问请求转发至第二服务,具体包括以下步骤:
步骤S142,将验证标识符发送至拦截器,并调用拦截器判断验证标识符是否正确。
具体的,内部服务器将验证标识符sign发送至拦截器,并调用拦截器判断该验证标识符sign是否正确。
步骤S144,将第二访问请求发送至第二服务,并调用第二服务对第二访问请求进行处理,反馈第二处理结果。
具体的,当步骤S142中的判断结果为验证标识符sign正确时,内部服务器则会将第二访问请求发送至第二服务,并调用第二服务对第二访问请求进行处理,进而反馈对应的第二处理结果。
步骤S146,将鉴权失败提示发送至外部服务,并禁止第二访问请求访问第二服务。
具体的,当步骤S142中的判断结果为验证标识符sign不正确时,内部服务器则会将鉴权失败的提示返回至外部服务,并禁止第二访问请求访问第二服务。
如图8所示,在一个实施例中,本发明提供的访问鉴权方法,还包括以下步骤:
步骤S810,接收来自第三服务的第三访问请求,第三服务为内部服务中的微服务,第三访问请求为内部服务中的各个微服务之间的访问请求。
具体的,内部服务器接收来自第三服务的第三访问请求,第三服务为内部服务中的微服务,第三访问请求为内部服务中的各个微服务之间的访问请求。
步骤S820,基于第三访问请求,调用第四服务对第三访问请求进行处理,并反馈第三处理结果,第四服务为内部服务中区别于第三服务的其他任一微服务。
具体的,内部服务器基于步骤S810中收到的第三访问请求,调用第四服务对第三访问请求进行处理,并反馈第三处理结果,第四服务为内部服务中区别于第三服务的其他任一微服务。
下面对本发明提供的访问鉴权装置进行描述,下文描述的访问鉴权装置与上文描述的访问鉴权方法可相互对应参照。
如图9所示,在一个实施例中,一种访问鉴权装置,包括请求处理模块910、第一鉴权模块920、签名获取模块930以及第二鉴权模块940。
请求处理模块910用于接收来自外部服务的第一访问请求,并调用微服务网关作为第一访问请求的入口,第一访问请求为外部服务器通过统一资源定位器发出的访问内部服务资源的请求。
第一鉴权模块920用于调用过滤器根据第一访问请求对应的业务接口进行鉴权,并在第一访问请求鉴权通过后调用网关路由将第一访问请求转发至第一服务,第一服务用于基于第一访问请求反馈第一处理结果。
签名获取模块930用于基于第一处理结果,获取第一访问请求头中的验证标识符,并将验证标识符拼接为第二访问请求。
第二鉴权模块940用于调用拦截器判断第二访问请求中的验证标识符是否正确,并在验证标识符正确时,将第二访问请求转发至第二服务,第二服务用于基于第二访问请求反馈第二处理结果。
在本实施例中,本发明提供的访问鉴权装置,第一鉴权模块具体用于:
调用微服务网关查找与第一访问请求匹配的第一路由。
当第一路由断言可用时,创建过滤器链并调用过滤器链以获取第一访问请求匹配的路由过滤器。
在本实施例中,本发明提供的访问鉴权装置,第一鉴权模块具体还用于:
获取多个来自外部服务的第一访问请求,并按照获取时间先后对多个第一访问请求进行排序。
调用全局过滤器以及每个第一访问请求对应的路由过滤器按照排序对第一访问请求进行过滤,以确定可用的路由过滤器及其对应的第一访问请求。
在本实施例中,本发明提供的访问鉴权装置,还包括加密模块,用于:
获取第一访问请求对应的加密参数,并将加密参数组成新的字符串,加密参数至少包括第一访问请求的外部服务地址、密钥以及时间戳。
将外部服务地址、密钥以及新的字符串进行拼接,以将新的字符串加密成验证标识码。
在本实施例中,本发明提供的访问鉴权装置,还包括降级处理模块,用于:
当多个第一访问请求进入微服务网关时,判断第一服务是否基于第一访问请求反馈第一处理结果。若否,则
将无法反馈的第一服务对应的第一访问请求返回至外部服务,以对第一服务进行降级处理。
在本实施例中,本发明提供的访问鉴权装置,第二鉴权模块具体用于:
将验证标识符发送至拦截器,并调用拦截器判断验证标识符是否正确。若是,则
将第二访问请求发送至第二服务,并调用第二服务对第二访问请求进行处理,反馈第二处理结果。若否,则
将鉴权失败提示发送至外部服务,并禁止第二访问请求访问第二服务。
在本实施例中,本发明提供的访问鉴权装置,还包括内部服务访问模块,用于:
接收来自第三服务的第三访问请求,第三服务为内部服务中的微服务,第三访问请求为内部服务中的各个微服务之间的访问请求。
基于第三访问请求,调用第四服务对第三访问请求进行处理,并反馈第三处理结果,第四服务为内部服务中区别于第三服务的其他任一微服务。
图10示例了一种电子设备的实体结构示意图,该电子设备可以是智能终端,其内部结构图可以如图10所示。该电子设备包括通过系统总线连接的处理器、内存储器和网络接口。其中,该电子设备的处理器用于提供计算和控制能力。该电子设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该电子设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现访问鉴权方法,该方法包括:
接收来自外部服务的第一访问请求,并调用微服务网关作为第一访问请求的入口,第一访问请求为外部服务器通过统一资源定位器发出的访问内部服务资源的请求;
调用过滤器根据第一访问请求对应的业务接口进行鉴权,并在第一访问请求鉴权通过后调用网关路由将第一访问请求转发至第一服务,第一服务用于基于第一访问请求反馈第一处理结果;
基于第一处理结果,获取第一访问请求头中的验证标识符,并将验证标识符拼接为第二访问请求;
调用拦截器判断第二访问请求中的验证标识符是否正确,并在验证标识符正确时,将第二访问请求转发至第二服务,第二服务用于基于第二访问请求反馈第二处理结果。
本领域技术人员可以理解,图10中示出的结构,仅仅是与本发明方案相关的部分结构的框图,并不构成对本发明方案所应用于其上的电子设备的限定,具体的电子设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
另一方面,本发明还提供了一种计算机存储介质,存储有计算机程序,计算机程序被处理器执行时实现访问鉴权方法,该方法包括:
接收来自外部服务的第一访问请求,并调用微服务网关作为第一访问请求的入口,第一访问请求为外部服务器通过统一资源定位器发出的访问内部服务资源的请求;
调用过滤器根据第一访问请求对应的业务接口进行鉴权,并在第一访问请求鉴权通过后调用网关路由将第一访问请求转发至第一服务,第一服务用于基于第一访问请求反馈第一处理结果;
基于第一处理结果,获取第一访问请求头中的验证标识符,并将验证标识符拼接为第二访问请求;
调用拦截器判断第二访问请求中的验证标识符是否正确,并在验证标识符正确时,将第二访问请求转发至第二服务,第二服务用于基于第二访问请求反馈第二处理结果。
又一方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。电子设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令时实现访问鉴权方法,该方法包括:
接收来自外部服务的第一访问请求,并调用微服务网关作为第一访问请求的入口,第一访问请求为外部服务器通过统一资源定位器发出的访问内部服务资源的请求;
调用过滤器根据第一访问请求对应的业务接口进行鉴权,并在第一访问请求鉴权通过后调用网关路由将第一访问请求转发至第一服务,第一服务用于基于第一访问请求反馈第一处理结果;
基于第一处理结果,获取第一访问请求头中的验证标识符,并将验证标识符拼接为第二访问请求;
调用拦截器判断第二访问请求中的验证标识符是否正确,并在验证标识符正确时,将第二访问请求转发至第二服务,第二服务用于基于第二访问请求反馈第二处理结果。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本发明所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。
作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双倍数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种访问鉴权方法,其特征在于,所述方法包括:
接收来自外部服务的第一访问请求,并调用微服务网关作为所述第一访问请求的入口,所述第一访问请求为所述外部服务器通过统一资源定位器发出的访问内部服务资源的请求;
调用过滤器根据所述第一访问请求对应的业务接口进行鉴权,并在所述第一访问请求鉴权通过后调用网关路由将所述第一访问请求转发至第一服务,所述第一服务用于基于所述第一访问请求反馈第一处理结果;
基于所述第一处理结果,获取所述第一访问请求头中的验证标识符,并将所述验证标识符拼接为第二访问请求;
调用拦截器判断所述第二访问请求中的验证标识符是否正确,并在所述验证标识符正确时,将所述第二访问请求转发至第二服务,所述第二服务用于基于所述第二访问请求反馈第二处理结果。
2.根据权利要求1所述的访问鉴权方法,其特征在于,所述过滤器包括全局过滤器和路由过滤器,所述全局过滤器为已有过滤器,所述路由过滤器为配置路由对应的过滤器;
所述调用过滤器根据所述第一访问请求对应的业务接口进行鉴权,并在所述第一访问请求鉴权通过后调用网关路由将所述第一访问请求转发至第一服务,包括:
调用所述微服务网关查找与所述第一访问请求匹配的第一路由;
当所述第一路由断言可用时,创建过滤器链并调用所述过滤器链以获取所述第一访问请求匹配的路由过滤器。
3.根据权利要求2所述的访问鉴权方法,其特征在于,所述调用过滤器根据所述第一访问请求对应的业务接口进行鉴权,并在所述第一访问请求鉴权通过后调用网关路由将所述第一访问请求转发至第一服务,还包括:
获取多个来自外部服务的所述第一访问请求,并按照获取时间先后对多个所述第一访问请求进行排序;
调用所述全局过滤器以及每个所述第一访问请求对应的所述路由过滤器按照排序对所述第一访问请求进行过滤,以确定可用的所述路由过滤器及其对应的所述第一访问请求。
4.根据权利要求1所述的访问鉴权方法,其特征在于,所述基于所述第一处理结果,获取所述第一访问请求头中的验证标识符,并将所述验证标识符拼接为第二访问请求,之前还包括:
获取所述第一访问请求对应的加密参数,并将所述加密参数组成新的字符串,所述加密参数至少包括所述第一访问请求的外部服务地址、密钥以及时间戳;
将所述外部服务地址、密钥以及新的字符串进行拼接,以将所述新的字符串加密成所述验证标识码。
5.根据权利要求1所述的访问鉴权方法,其特征在于,所述方法还包括:
当多个所述第一访问请求进入所述微服务网关时,判断所述第一服务是否基于所述第一访问请求反馈所述第一处理结果;若否,则
将无法反馈的所述第一服务对应的第一访问请求返回至外部服务,以对所述第一服务进行降级处理。
6.根据权利要求1所述的访问鉴权方法,其特征在于,所述调用拦截器判断所述第二访问请求中的验证标识符是否正确,并在所述验证标识符正确时,将所述第二访问请求转发至第二服务,包括:
将所述验证标识符发送至所述拦截器,并调用所述拦截器判断所述验证标识符是否正确;若是,则
将所述第二访问请求发送至所述第二服务,并调用所述第二服务对所述第二访问请求进行处理,反馈所述第二处理结果;若否,则
将鉴权失败提示发送至所述外部服务,并禁止所述第二访问请求访问所述第二服务。
7.根据权利要求1至6任一项所述的访问鉴权方法,其特征在于,所述方法还包括:
接收来自第三服务的第三访问请求,所述第三服务为内部服务中的微服务,所述第三访问请求为所述内部服务中的各个所述微服务之间的访问请求;
基于所述第三访问请求,调用第四服务对所述第三访问请求进行处理,并反馈第三处理结果,所述第四服务为所述内部服务中区别于所述第三服务的其他任一微服务。
8.一种访问鉴权装置,其特征在于,所述装置包括:
请求处理模块,用于接收来自外部服务的第一访问请求,并调用微服务网关作为所述第一访问请求的入口,所述第一访问请求为所述外部服务器通过统一资源定位器发出的访问内部服务资源的请求;
第一鉴权模块,用于调用过滤器根据所述第一访问请求对应的业务接口进行鉴权,并在所述第一访问请求鉴权通过后调用网关路由将所述第一访问请求转发至第一服务,所述第一服务用于基于所述第一访问请求反馈第一处理结果;
签名获取模块,用于基于所述第一处理结果,获取所述第一访问请求头中的验证标识符,并将所述验证标识符拼接为第二访问请求;
第二鉴权模块,用于调用拦截器判断所述第二访问请求中的验证标识符是否正确,并在所述验证标识符正确时,将所述第二访问请求转发至第二服务,所述第二服务用于基于所述第二访问请求反馈第二处理结果。
9.一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的方法的步骤。
10.一种计算机存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
CN202311561868.4A 2023-11-22 2023-11-22 访问鉴权方法、装置、电子设备及存储介质 Pending CN117834179A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311561868.4A CN117834179A (zh) 2023-11-22 2023-11-22 访问鉴权方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311561868.4A CN117834179A (zh) 2023-11-22 2023-11-22 访问鉴权方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN117834179A true CN117834179A (zh) 2024-04-05

Family

ID=90506710

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311561868.4A Pending CN117834179A (zh) 2023-11-22 2023-11-22 访问鉴权方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN117834179A (zh)

Similar Documents

Publication Publication Date Title
US11588649B2 (en) Methods and systems for PKI-based authentication
CN109547458B (zh) 登录验证方法、装置、计算机设备及存储介质
JP2020058042A (ja) 部分的に信頼できる第三者機関を通しての鍵交換
US20220394026A1 (en) Network identity protection method and device, and electronic equipment and storage medium
CN112202705A (zh) 一种数字验签生成和校验方法、系统
CN112788036B (zh) 身份验证方法及装置
US10798080B2 (en) User authentication in communication systems
CN110855624A (zh) 基于web接口的安全校验方法及相关设备
CN112953745B (zh) 服务调用方法、系统、计算机设备和存储介质
CN113341798A (zh) 远程访问应用的方法、系统、装置、设备及存储介质
CN112016106A (zh) 开放接口的认证调用方法、装置、设备和可读存储介质
US9398024B2 (en) System and method for reliably authenticating an appliance
US11943213B2 (en) Device and method for mediating configuration of authentication information
CN112632573B (zh) 智能合约执行方法、装置、系统、存储介质及电子设备
CN108768928B (zh) 一种信息获取方法、终端及服务器
CN112929388B (zh) 网络身份跨设备应用快速认证方法和系统、用户代理设备
CN113872990A (zh) 基于ssl协议的vpn网络证书认证方法、装置和计算机设备
CN116996305A (zh) 一种多层次安全认证方法、系统、设备、存储介质及入口网关
CN114039748B (zh) 身份验证方法、系统、计算机设备和存储介质
CN115766056A (zh) 接口安全防护的处理方法及装置
CN117834179A (zh) 访问鉴权方法、装置、电子设备及存储介质
KR20160109241A (ko) 리소스의 안전성 검증 장치와 서버 및 검증방법
CN112134705B (zh) 数据鉴权的方法及装置、存储介质和电子装置
CN113938323B (zh) 基于jwt的防重放攻击方法、装置、设备以及存储介质
CN117478422A (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