情境:
当请求令牌到期并且来自不同服务实例的多个请求发生时,所有请求都通过远程HTTP调用请求新请求令牌,同时,后一个请求令牌将使前一个请求令牌无效。因为获取新令牌的每个请求都会使前一个令牌无效。生成请求令牌的服务是第三方服务,我们无法更改它。
问题:
我们的应用程序架构是基于微服务的,每个服务都有多个实例,我如何在每个服务之间重用请求令牌?(可能存储在外部Redis中是一个选项)
在服务启动期间,我们如何确保只向第三方服务发送一个刷新令牌请求?
之后,当请求令牌过期时,我们如何续订?
技术堆栈:
答案 0 :(得分:0)
以下是您可以考虑的选项
为令牌管理创建新的MicroService。所有MicroServices都将通过此服务访问第三方Auth组件
在令牌管理服务中,您创建一个Spring Singleton bean,该服务启动时会自动初始化(@Autowired)
在这个bean中,您可以拥有调用第三方API的逻辑
根据您的要求,您可以决定是否需要像Redis / memcache这样的缓存服务,或者RDBMS表是否可以
在此令牌管理服务中,当您从第三方API获得令牌过期响应时,您可以拥有续订令牌的逻辑