在 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。