Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring引导客户端调用由OAuth2保护的REST API_Java_Spring Boot_Spring Security - Fatal编程技术网

Java Spring引导客户端调用由OAuth2保护的REST API

Java Spring引导客户端调用由OAuth2保护的REST API,java,spring-boot,spring-security,Java,Spring Boot,Spring Security,我试图在spring中编写一个客户端,它将调用由OAuth2保护的RESTAPI。 我可以使用以下代码从Auth服务器获取令牌,然后调用资源服务器。 客户端ID、客户端密码、用户名、密码和访问令牌URL(从中获取令牌的URL)以及资源URL。 如何在SpringBoot中编写一个包含上述信息的客户机,以便调用资源服务器URL获取资源或发布文章。 在我获得访问令牌(它将有一段时间在ms(TTL)中生存)之后,我如何缓存它,以便不必为每个请求生成令牌。缓存令牌好吗?您可以使用声明性rest客户端-f

我试图在spring中编写一个客户端,它将调用由OAuth2保护的RESTAPI。 我可以使用以下代码从Auth服务器获取令牌,然后调用资源服务器。 客户端ID、客户端密码、用户名、密码和访问令牌URL(从中获取令牌的URL)以及资源URL。 如何在SpringBoot中编写一个包含上述信息的客户机,以便调用资源服务器URL获取资源或发布文章。
在我获得访问令牌(它将有一段时间在ms(TTL)中生存)之后,我如何缓存它,以便不必为每个请求生成令牌。缓存令牌好吗?

您可以使用声明性rest客户端-feign

用于使用服务和缓存,以缓存访问令牌

提示:调用访问令牌并缓存它,然后在后续调用中恢复它。
一旦端点抛出未授权的异常或令牌变为无效,则外部客户端中的重试机制可以进行另一次调用。要实现重试,您需要将“spring retry”作为依赖项之一

您可以使用声明性rest客户端-feign

用于使用服务和缓存,以缓存访问令牌

提示:调用访问令牌并缓存它,然后在后续调用中恢复它。
一旦端点抛出未授权的异常或令牌变为无效,则外部客户端中的重试机制可以进行另一次调用。要实现重试,您需要将“spring retry”作为依赖项之一

如果您使用的是JWT令牌,则生存时间编码在令牌中

  • 您可以将其存储在本地存储器中
  • 您可以将其存储为cookie
  • 您可以将其存储在浏览器会话中
  • 您可以实现存储令牌的任意方式
您在哪里提供代币取决于您。
它可能处于通信的任何阶段(请求参数、报头、按需)。

如果您使用JWT令牌,则生存时间编码在令牌中

  • 您可以将其存储在本地存储器中
  • 您可以将其存储为cookie
  • 您可以将其存储在浏览器会话中
  • 您可以实现存储令牌的任意方式
您在哪里提供代币取决于您。
它可能处于通信的任何阶段(请求参数、报头、按需)。

我建议使用CloseableHttpClient进行如下操作

  • 将clientID、用户凭据、访问令牌等详细信息放在Http调用的头中
  • 使用CloseableHttpClient类->execute方法并将标头与URL一起传递
  • 解析响应并提取细节

  • 使用@Sivaraj提到的Spring缓存存储检索到的令牌,或者您可以使用一个表来存储该值以及时间戳,并为下一次调用获取该值


  • 我建议使用CloseableHttpClient像下面这样做

  • 将clientID、用户凭据、访问令牌等详细信息放在Http调用的头中
  • 使用CloseableHttpClient类->execute方法并将标头与URL一起传递
  • 解析响应并提取细节

  • 使用@Sivaraj提到的Spring缓存存储检索到的令牌,或者您可以使用一个表来存储该值以及时间戳,并为下一次调用获取该值


  • 谢谢古拉布。你有没有一个例子可以让我看一下。我想我可以接受这个选择。如果可能,请提供样品。ThanksHi@AJK1305,是的,您可以检查以下链接,除了缓存部分外,这些链接在一定程度上符合您的要求。谢谢古拉布。你有没有一个例子可以让我看一下。我想我可以接受这个选择。如果可能,请提供样品。ThanksHi@AJK1305,是的,您可以检查以下链接,除了缓存部分外,这些链接在一定程度上符合您的要求。谢谢,我在这个场景中没有得到JWT代币谢谢,在这个场景中我没有得到JWT代币