方案:
当请求令牌到期并从不同的服务实例中发生多个请求时,所有请求都通过远程HTTP调用请求新请求令牌,同时,后一个请求令牌将使以前的请求令牌无效。因为每个获得新令牌的请求都将使上一个无效。生成请求令牌的服务是第三方,我们无法更改它。
问题:
-
我们的应用程序体系结构是基于微服务的,每个服务都会有多个实例,我如何在每个服务之间重复使用请求令牌?(也许将其存储在外部redis中(>
-
在服务启动期间,我们如何确保仅发送给第三方服务的一个刷新代币请求?
-
之后,当请求令牌到期时,我们如何续订?
技术堆栈:
- Java 8
- SpringCloud
- redis
- 牧场主
- mysql
以下是您可以考虑
的选项为令牌管理创建新的微服务。所有微服务都将通过此服务访问第三方auth组件
在令牌管理服务中,您可以创建一个Spring Singleton Bean,该bean将在此服务启动时自动初始化(@Autowired(
在此豆内,您可以拥有调用第三方API
的逻辑根据您的要求,您可以决定是否需要Redis/memcache之类的缓存服务,否则RDBMS表是否需要
在这项令牌管理服务中,当您获得第三方API的令牌过期响应时,您可以拥有续订令牌
的逻辑