我需要设计一个项目,其中基于 springboot 的应用程序具有多个微服务,利用外部 API 提供商托管的资源(多个 API)。
API 提供程序使用基于 OAuth2.0 客户端凭据的身份验证和授权。对于授权,会生成访问令牌,通过该令牌可以访问 API。他们还制定了保留相同令牌 55 分钟的政策。
并在此基础上需要导出解决方案。目前测试代码已根据设计草案完成。
面临的挑战:
如何以及在何处存储生成的令牌,以便在来自我们任何微服务的后续请求中使用。
解决方案草案:
我使用这种方法面临的挑战是,我创建的用于处理 API 调用之前的步骤的 Spring 组件正在传递一个新的 Bean 实例,因此每次都有一个新的 Hashmap 实例。
因此,令牌的重用失败,外部 API 提供商正在为每个 API 调用生成新的令牌。
请建议/建议跨会话/微服务/后续调用处理和维护具有令牌状态的 Bean 的方法。
假设:默认的bean类型始终是Singleton。因此,如果Bean配置为组件,那么它不应该为每个请求传递相同的bean实例吗?
谢谢。
在我看来,在地图中存储令牌并不是最好的解决方案,如果您运行应用程序的多个实例,您将遇到可扩展性问题,要解决此问题您需要更多的输入数据,有些将令牌存储在客户端侧面,简化了流程,有些使用外部存储。
但是如果您喜欢您的解决方案,请在 utilClass 中将其设为静态 ConcurrentHashMap