在 Javaclient 中使用 @FeignClient 和 OAuth2Authentication
Using @FeignClient with OAuth2Authentication in Javaclient
我想在简单的 spring 引导应用程序 (CommandLineRunner) 中使用 @FeignClient 来调用微服务端点。我如何提供 OAuth2Authentication 来调用受保护的端点,如 helloUser()
?
@FeignClient(name = "sampleService", contextId = "greetingService")
public interface GreetingService {
@GetMapping("/hello-anonymous")
String helloAnonymous();
@GetMapping("/hello-user")
@Secured({ Role.USER })
String helloUser();
@GetMapping("/hello-admin")
@Secured({ Role.ADMIN })
String helloAdmin();
}
您可以使用 Feign RequestInterceptor 向下游传递身份验证 header:
public class FeignRequestInterceptor implements RequestInterceptor {
@Override
public final void apply(RequestTemplate template) {
template.header("Authorization", "foo token");
}
}
这样所有的伪造调用都将被提供一个授权 header。
我想在简单的 spring 引导应用程序 (CommandLineRunner) 中使用 @FeignClient 来调用微服务端点。我如何提供 OAuth2Authentication 来调用受保护的端点,如 helloUser()
?
@FeignClient(name = "sampleService", contextId = "greetingService")
public interface GreetingService {
@GetMapping("/hello-anonymous")
String helloAnonymous();
@GetMapping("/hello-user")
@Secured({ Role.USER })
String helloUser();
@GetMapping("/hello-admin")
@Secured({ Role.ADMIN })
String helloAdmin();
}
您可以使用 Feign RequestInterceptor 向下游传递身份验证 header:
public class FeignRequestInterceptor implements RequestInterceptor {
@Override
public final void apply(RequestTemplate template) {
template.header("Authorization", "foo token");
}
}
这样所有的伪造调用都将被提供一个授权 header。