我正在尝试在春季编写一个客户端,该客户端将调用由OAuth2保护的REST api。 我有以下内容,可用于从Auth Server获取令牌,然后调用资源服务器。 客户端ID,客户端密钥,用户名,密码和访问令牌URL(从中获取令牌的URL)和资源URL。 我如何在具有上述信息的春季启动中编写客户端,以便我可以调用资源服务器URL来获取我的资源或进行POST。 在获得访问令牌后,该令牌将具有ms(TTL)的生存时间,该如何缓存它,因此不必为每个请求都生成令牌。缓存令牌好吗?
答案 0 :(得分:1)
您可以使用声明式休息客户端-伪装spring-cloud-starter-openfeign
用于消费服务和缓存Spring cache来缓存访问令牌。
提示:调用访问令牌并对其进行缓存,然后在后续调用中将其恢复。 一旦端点引发未经授权的异常或令牌变得无效,则伪客户端中的重试机制可以进行另一个调用。要实现重试,您需要将“ spring-retry”作为依赖项之一。
答案 1 :(得分:1)
如果您使用的是JWT令牌,则生存时间会在令牌中进行编码。
您提供令牌的位置由您自己决定。 它可以处于通信的任何阶段(请求参数,标头,按需)。
答案 2 :(得分:1)
我建议像下面这样使用CloseableHttpClient
解析响应并提取详细信息
使用@Sivaraj提到的Spring缓存来存储检索到的令牌,或者您可以使用表来存储该值和时间戳,并为下一次调用获取该值。