感谢您的时间。 为简单起见,我创建了一个示例服务,如下所示:
@RestController
@RequestMapping("/")
public class ComputeController {
@GetMapping("/add")
public int add(@RequestParam("left") int left, @RequestParam("right") int right) {
return left + right;
}
}
为了保护这个网址,我像这样配置spring-security:
management.security.enabled=true
security.user.name=admin
security.user.password=admin
当我启动此服务并以这样的方式访问时:
GET /add?left=100&right=11 HTTP/1.1
Authorization: ***** Hidden credentials *****
Host: localhost:7777
Connection: close
这一切都很顺利。
在其他节点中,我通过netflix feign创建了一个“service-comsumer”。这是一个Java接口。
@FeignClient(name = "API-GATEWAY", path = "/compute-service", fallback = ComputeServiceCircuitBreaker.class)
public interface ComputeServiceClient {
@RequestMapping(path = "/add", method = RequestMethod.GET)
public Integer add(@RequestParam("left") Integer left, @RequestParam("right") Integer right);
}
但我不知道如何配置请求标题“授权”。
有什么想法吗?再次感谢。
答案 0 :(得分:16)
您需要创建一个FeignClient配置类,例如
import feign.auth.BasicAuthRequestInterceptor;
@Configuration
public class FeignClientConfiguration {
@Bean
public BasicAuthRequestInterceptor basicAuthRequestInterceptor() {
return new BasicAuthRequestInterceptor("admin", "admin");
}
}
然后在@FeignClient注释中使用此配置文件
@FeignClient(name="service",configuration = FeignClientConfiguration.class)
继续尝试,希望有所帮助
感谢Ryan Baxter进行了更正
答案 1 :(得分:0)
截至2020年10月,此方法有效:
public class FeignClientConfiguration {
@Bean
public BasicAuthRequestInterceptor basicAuthRequestInterceptor() {
return new BasicAuthRequestInterceptor("asdf", "asdf");
}
}
@FeignClient(name = "thirdPartyClient", url = "ceva.com",
configuration = FeignClientConfiguration.class)
public interface ThirdPartyClient {
@GetMapping
Response get();
}
请注意,我们不会使用@Configuration注释配置,以免将其应用于所有请求。