我正在构建一个API网关,该网关使用OAuth2的Spring Webflux,Spring Cloud Gateway,Spring Cloud Security和Okta。
这是我的RouteLocator,通过它可以给我的Foo Microservice打电话。
@Bean
public RouteLocator routeLocator(RouteLocatorBuilder builder, TokenRelayGatewayFilterFactory filterFactory) {
return builder.routes()
.route("foo", r ->
r.path("/foo")
.filters(f -> f
.rewritePath("/foo", "/api/v1/foo")
.filter(filterFactory.apply()))
.uri("lb://foo-service")
)
.build();
}
这很好用。
但是,由于我需要汇总不同微服务的结果,比如说Foo和Bar,所以我正在创建一个负载均衡的Spring WebClient bean,可以用来进行http调用:
@Bean
@LoadBalanced
public WebClient.Builder webClientBuilder() {
return WebClient.builder();
}
我如何配置WebClient以按照TokenRelayGatewayFilterFactory在RouteLocator中的相同方式在每个请求上传递令牌?
看看ServletOAuth2AuthorizedClientExchangeFilterFunction(或等效的反应性)该视频将更详细地介绍它:https://youtu.be/v2J32nd0g24?t=2168