一种微服务架构中会话转发的实现方法技术

技术编号:23628780 阅读:22 留言:0更新日期:2020-03-31 23:56
本发明专利技术提供一种微服务架构中会话转发的实现方法,属于微服务技术领域,本发明专利技术在微服务架构中,服务的调用包含客户端应用对服务的调用、一个服务对另外一个服务的调用,实现微服务架构中客户端应用调用服务的安全认证、微服务架构中服务间调用的安全认证;采用AOP的编程范式,服务安全的代码与业务代码分离,有利于程序的可扩展性和可重用性。

Implementation of session forwarding in microservice architecture

【技术实现步骤摘要】
一种微服务架构中会话转发的实现方法
本专利技术涉及微服务技术,尤其涉及一种微服务架构中会话转发的实现方法。
技术介绍
在现实场景中使用微服务时,安全是十分常见的要求。在实现服务的安全时,通常采用OAuth2或OpenIDConnect开放协议,它们可以为几乎所有类型如基于Web、Mobile等的客户端应用提供身份验证的方法,并且具有通用性、平台无关性。基于OAuth2或OpenIDConnect协议的实现方法中,由于尚未公开一种完全的方案,特别是在服务和服务间的调用中如何转发已经认证的用户身份,给微服务安全的实际实现中造成了一些困难或重复的设计。
技术实现思路
为了解决以上技术问题,本专利技术提出了一种微服务架构中会话转发的实现方法,从而实现服务调用的安全认证,为微服务安全的设计和实现提供一种参考。本专利技术的技术方案是:一种微服务架构中会话转发的实现方法,在微服务架构中,服务的调用包含客户端应用对服务的调用、一个服务对另外一个服务的调用,包括提供微服务架构中客户端应用调用服务的安全认证;提供微服务架构中服务间调用的安全认证;采用AOP即面向切面编程的编程范式。进一步的,从客户端应用中获取到会话信息,添加到调用服务的请求中,以实现客户端调用服务的安全认证。在服务应用中,从客户端应用的原始请求中获取会话,并存储到线程变量中。进一步的,从服务应用的线程变量中获取到会话信息,添加到调用服务的请求中,以实现服务间调用的安全认证。进一步的,将AOP的编程范式应用到服务调用中,以提高程序的可扩展性和可重用性。进一步的,具体如下:对于客户端应用调用服务:在客户端应用中,基于OAuth2或OpenIDConnect实现用户认证,并且认证成功后在该客户端应用中存储当前用户的会话;开发一个ClientRequestInterceptor即客户端请求拦截器并添加到客户端应用中,对客户端应用调用服务时发出的请求进行拦截,然后从会话中获取到token,并将token添加到请求的header中;在服务应用中,基于OAuth2或OpenIDConnect实现用户身份校验,即在被调用的服务中,从客户端应用请求header中获取token,解析出用户信息。所述token中包含用户身份信息,或者凭token调用额外的用户服务获取身份信息。对于服务A调用另外一个服务B:在服务A中,处理原始的客户端应用请求,从header中获取token并校验用户身份,校验成功后,将token存储在线程变量中;开发一个ServiceRequestInterceptor即服务请求拦截器并添加到每个服务应用中,对服务A调用服务B时发出的请求进行拦截,先从线程变量中获取到token,然后将token添加到请求的header中;在如服务B中,从token中解析出用户信息。本专利技术实现了微服务架构中客户端调用服务,以及服务间调用的会话转发。本专利技术的有益效果是:1)、本专利技术可以实现微服务架构中客户端应用调用服务的安全认证。2)、本专利技术可以实现微服务架构中服务间调用的安全认证。3)、本专利技术采用AOP的编程范式,服务安全的代码与业务代码分离,有利于程序的可扩展性和可重用性。附图说明图1是微服务架构中的服务调用示意图。具体实施方式为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例,基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本专利技术保护的范围。本专利技术实现微服务架构中客户端调用服务,以及服务间调用的会话转发。从客户端应用中获取到会话信息,添加到调用服务的请求中,以实现客户端调用服务的安全认证。在服务应用中,从客户端应用的原始请求中获取会话,并存储到线程变量中。从服务应用的线程变量中获取到会话信息,添加到调用服务的请求中,以实现服务间调用的安全认证。将AOP的编程范式应用到服务调用中,以提高程序的可扩展性和可重用性。在微服务架构中,服务的调用包含客户端应用对服务的调用、一个服务对另外一个服务的调用,如图1所示,黑色填充的菱形方块表示客户端应用中的请求拦截器;黑色填充的正方形方块表示服务应用中的请求拦截器。技术实现方案如下:(一)对于客户端应用调用服务:在客户端应用中,基于OAuth2或OpenIDConnect实现用户认证,并且认证成功后在该客户端应用中存储当前用户的会话;开发一个ClientRequestInterceptor(客户端请求拦截器)并添加到客户端应用中,对客户端应用调用服务时发出的请求进行拦截,然后从会话中获取到token(token中包含用户身份信息,或者可以凭token调用额外的用户服务获取身份信息),并将token添加到请求的header中;在服务应用中,基于OAuth2或OpenIDConnect实现用户身份校验,即在被调用的服务中,从客户端应用请求header中获取token,解析出用户信息。(二)对于一个服务(如服务A)调用另外一个服务(如服务B):在一个服务(如服务A)中,处理原始的客户端应用请求,如(一)中所述,从header中获取token并校验用户身份,校验成功后,将token存储在线程变量中;开发一个ServiceRequestInterceptor(服务请求拦截器)并添加到每个服务应用中,对一个服务(如服务A)调用其他服务(如服务B)时发出的请求进行拦截,先从线程变量中获取到token,然后将token添加到请求的header中;在其他服务(如服务B)中,如(一)中所述从token中解析出用户信息。本专利技术基于OAuth2或OpenIDConnect实现用户认证,使用开源框架如SpringSecurity。也可以按照这些开放协议自研。服务的设计,基于RESTfulAPI风格。服务的开发,基于SpringFramework。也可以使用其他语言和框架。客户端应用调用服务,以及一个服务调用另外一个服务,可以基于FeignRequestInterceptor接口。也可以使用ApacheHttpClient或SpringFrameworkRestTemplate进行扩展开发。以上所述仅为本专利技术的较佳实施例,仅用于说明本专利技术的技术方案,并非用于限定本专利技术的保护范围。凡在本专利技术的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本专利技术的保护范围内。本文档来自技高网...

【技术保护点】
1.一种微服务架构中会话转发的实现方法,其特征在于,/n在微服务架构中,服务的调用包含客户端应用对服务的调用、一个服务对另外一个服务的调用,包括/n提供微服务架构中客户端应用调用服务的安全认证;/n提供微服务架构中服务间调用的安全认证;/n采用AOP即面向切面编程的编程范式。/n

【技术特征摘要】
1.一种微服务架构中会话转发的实现方法,其特征在于,
在微服务架构中,服务的调用包含客户端应用对服务的调用、一个服务对另外一个服务的调用,包括
提供微服务架构中客户端应用调用服务的安全认证;
提供微服务架构中服务间调用的安全认证;
采用AOP即面向切面编程的编程范式。


2.根据权利要求1所述的方法,其特征在于,
从客户端应用中获取到会话信息,添加到调用服务的请求中,以实现客户端调用服务的安全认证。


3.根据权利要求2所述的方法,其特征在于,
在服务应用中,从客户端应用的原始请求中获取会话,并存储到线程变量中。


4.根据权利要求3所述的方法,其特征在于,
从服务应用的线程变量中获取到会话信息,添加到调用服务的请求中,以实现服务间调用的安全认证。


5.根据权利要求1所述的方法,其特征在于,
将AOP的编程范式应用到服务调用中,以提高程序的可扩展性和可重用性。


6.根据权利要求1所述的方法,其特征在于,
具体如下:
对于客户端应用调用服务:
在客户端应用中,基于OAuth2或OpenIDConnect实现用户认证,...

【专利技术属性】
技术研发人员:肖传楠玄德
申请(专利权)人:浪潮软件股份有限公司
类型:发明
国别省市:山东;37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1