我们有一些Spring微服务通过休息相互通信(Spring的RestTemplate)。在所有这些中都应用了Oauth2授权,并且使用一些自定义字段(即userRole,userId等)扩展了JWT令牌。
我的问题如下:
当我们调用也通过RestTemplate调用另一个微服务的服务时,当微服务彼此通信时,不转发原始承载令牌(Oauth2)。我们无法获得其他服务的回复,因为我们未经授权。我无法找到一个简洁的解决方案。
请注意,我们不想为第二次调用获取新令牌,因为这会影响我们的性能。这就是OAuth2RestTemplate正在做的事情,但我们只想传递原始的承载令牌。
在我研究Stackoverflow时,一个解决方案是manually add the bearer + token作为Authorization标头,并使用.exchange(),但我认为应该在spring中有一个配置,这将使RestTemplate传递给原始授权标头或类似的东西。
答案 0 :(得分:0)
我在本地测试时遇到了同样的问题。我的application.yml文件中的以下配置修复了它。令牌从一个服务调用传递到另一个服务调用。
锥: 命令: 默认: 执行: 隔离: 策略:SEMAPHORE 线: timeoutInMilliseconds:5000