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

How to refresh request token with microservice multiple instances

场景:

当request token过期时,不同服务实例发生多次请求,均通过远程HTTP调用请求新的request token,同时后一个request token会使前一个request token失效。因为每次获取新令牌的请求都会使之前的令牌失效。生成请求令牌的服务是第三方服务,我们无法更改。

问题:

  1. 我们的应用程序架构是基于微服务的,每个服务都会有多个实例,我如何在每个服务之间重用请求令牌?(也许可以将其存储在外部 Redis 中)

  2. 在服务启动的过程中,如何保证只向第三方服务发送一次refresh token请求?

  3. 之后request token过期了,如何续期?

技术堆栈:

以下是您可以考虑的选项

  1. 为令牌管理创建一个新的微服务。所有的微服务都会通过这个Service访问第三方Auth Component

  2. 在令牌管理服务中,您创建一个 Spring 单例 bean,它将在该服务启动时自动初始化 (@Autowired)

  3. 在这个bean里面,可以有调用第三方的逻辑API

  4. 根据您的要求,您可以决定是否需要缓存服务 Redis/memcache 或 RDBMS table

  5. 在此令牌管理服务中,当您从第三方API获得令牌过期响应时,您可以有更新令牌的逻辑