如何使用微服务多个实例刷新令牌



方案:

当请求令牌到期并从不同的服务实例中发生多个请求时,所有请求都通过远程HTTP调用请求新请求令牌,同时,后一个请求令牌将使以前的请求令牌无效。因为每个获得新令牌的请求都将使上一个无效。生成请求令牌的服务是第三方,我们无法更改它。

问题:

  1. 我们的应用程序体系结构是基于微服务的,每个服务都会有多个实例,我如何在每个服务之间重复使用请求令牌?(也许将其存储在外部redis中(>

  2. 在服务启动期间,我们如何确保仅发送给第三方服务的一个刷新代币请求?

  3. 之后,当请求令牌到期时,我们如何续订?

技术堆栈:

  • Java 8
  • SpringCloud
  • redis
  • 牧场主
  • mysql

以下是您可以考虑

的选项
  1. 为令牌管理创建新的微服务。所有微服务都将通过此服务访问第三方auth组件

  2. 在令牌管理服务中,您可以创建一个Spring Singleton Bean,该bean将在此服务启动时自动初始化(@Autowired(

  3. 在此豆内,您可以拥有调用第三方API

  4. 的逻辑
  5. 根据您的要求,您可以决定是否需要Redis/memcache之类的缓存服务,否则RDBMS表是否需要

  6. 在这项令牌管理服务中,当您获得第三方API的令牌过期响应时,您可以拥有续订令牌

  7. 的逻辑

最新更新