【发布时间】:2018-10-14 21:53:54
【问题描述】:
我有一个微服务,它支持两个用户的 HttpBasic 身份验证,user 和 admin,具有不同的授权。现在我有一个 Web 应用程序要求登录并将操作委托给第一个微服务。
我这样使用@LoadBalanced 和RestTemplateBuilder
@LoadBalanced
@Bean
RestTemplate restTemplate(RestTemplateBuilder builder) {
return builder.basicAuthorization("x", "x").build();
}
获得授权/负载平衡的RestTemplate 来访问我的微服务,但这种设计意味着凭据始终是x - x,无论用户 和 密码 用于登录网络应用程序。
我知道我可以使用这样的东西
@Autowired
private RestTemplateBuilder restTemplateBuilder;
public String callSecureService() {
// ... get principal and password
RestTemplate restTemplate = restTemplateBuilder.basicAuthorization([user], [password]).build();
return restTemplate.getForObject("http://localhost:8080/secureAPI",String.class);
}
使用用于登录 Web 应用程序的凭据调用微服务,但我认为这意味着失去功能区的负载平衡功能。
所以,我的问题是,有没有办法同时捕获(负载平衡和动态身份验证)?还是我理解错了,设计不应该是这样的?
(示例代码取自 javadeveloperzone.com1)
【问题讨论】:
标签: java spring-boot load-balancing resttemplate netflix-ribbon