【发布时间】:2019-04-24 04:16:43
【问题描述】:
我有一个成功从授权服务器获取令牌的 oauth2 客户端。 (并非总是如此,但现在是...... :))
客户端、zuul网关和资源服务器都注册在Eureka中。
我的客户端使用代理访问名为 microservice-files 的远程资源服务。
@RestController
@FeignClient(name = "zuul-server")
@RibbonClient(name = "microservice-files")
public interface ProxyMicroserviceFiles {
@GetMapping(value = "microservice-files/root")
FileBean getUserRoot();
}
所以我想将令牌转发给 Zull,然后转发给资源服务器。
我可以通过这种方式传递令牌以联系 Zuul,显然负载平衡也得到了管理(我刚刚测试了我不知道,这很棒)zuul 也可以传递令牌,但这不是很方便我d更喜欢以前的方法。
@EnableConfigurationProperties
@SpringBootApplication
@EnableFeignClients("com.clientui")
public class ClientUiApplication {
@Bean
public OAuth2RestOperations restOperations(
OAuth2ProtectedResourceDetails resource,
OAuth2ClientContext context) {
return new OAuth2RestTemplate(resource, context);
}
public static void main(String[] args) {
SpringApplication.run(ClientUiApplication.class, args);
}
}
这里是测试控制器
@Controller
public class ClientController {
@Autowired
private RestOperations restOperations;
@RequestMapping("/root")
public ResponseEntity userRootTest() {
String rootUrl = "http://localhost:9004/microservice-files/root";
return restOperations.getForEntity(rootUrl,FileBean.class);
}
}
【问题讨论】:
-
在这里找到解决方案stackoverflow.com/questions/29439653/… 答案有点旧(3 年前),但它仍然可以完美运行。我不知道是否存在更新的更好的解决方案。
标签: spring-boot spring-security oauth-2.0 netflix-zuul spring-cloud-feign