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

时间:2018-02-13 06:18:32

标签: java microservices access-token spring-cloud

情境:

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

问题:

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

  2. 在服务启动期间,我们如何确保只向第三方服务发送一个刷新令牌请求?

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

  4. 技术堆栈:

    • Java 8
    • SpringCloud
    • Redis的
    • 牧场主
    • MySQL的

1 个答案:

答案 0 :(得分:0)

以下是您可以考虑的选项

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

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

  3. 在这个bean中,您可以拥有调用第三方API的逻辑

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

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