我们有一些 Spring 微服务,它们通过 Rest(Spring 的 RestTemplate)相互通信。所有这些都应用了 Oauth2 授权,并且 JWT token 通过一些自定义字段(即 userRole、userId 等)进行了扩展。
我的问题如下:
当我们调用一个服务,同时通过 RestTemplate 调用另一个微服务时,当微服务相互通信时,原始的承载 token (Oauth2) 不会被转发。我们无法从其他服务获得响应,因为我们未经授权。我找不到一个简洁的解决方案。
请注意,我们不想为第二次调用获取新 token ,因为这会影响我们的性能。这就是 OAuth2RestTemplate 正在做的事情,但我们只想传递原始的不记名 token 。
根据我在 Stackoverflow 上的研究,一种解决方案是 manually add the bearer + token作为 Authorization header ,并使用 .exchange() ,但我认为 spring 中应该有一个配置,这将使 RestTemplate 传递原始 Authorization header ,或类似的东西。
最佳答案
我在本地测试时遇到了同样的问题。我的 application.yml 文件中的以下配置修复了它。 token 从一个服务调用传递到另一个服务调用。
hystrix: 命令: 默认: 执行: 隔离: 策略:信号量 线: 超时毫秒:5000
关于spring - 如何在 Spring 微服务之间传递原始 Oauth2 不记名 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42115420/