我有一个K8S应用程序与Keycloak,SpringGW和后端服务作为资源服务.
现在,它可以在没有authn的情况下工作,但我想使用autz代码流将authn添加到它。
问题是:这是我的API gw中的customRouteLocator
,我如何修改它以便添加tokenRelay过滤器?
@EnableWebFluxSecurity
@EnableDiscoveryClient
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
return builder.routes()
.route("product-service", r -> r.path("/webapi/products/**")
.filters(f -> f.rewritePath("/webapi/(?<segment>.*)", "/api/v1/${segment}"))
.uri("lb://product-service"))
.route("order-service", r -> r.path("/webapi/orders/**")
.filters(f -> f.rewritePath("/webapi/(?<segment>.*)", "/api/v1/${segment}"))
.uri("lb://order-service"))
.build();
}
}
字符串
1条答案
按热度按时间4c8rllxm1#
您需要将Spring Cloud Gateway设置为oauth2客户端。
部门:
字符串
在application.yaml中将网关定义为OAuth2客户端:
型
安全链:
型
之后,您可以将token-relay过滤器应用于所有路由。不幸的是,使用编程方法来定义路由,您必须手动将token-relay过滤器应用于所有路由。yaml方法提供了一种可能性,可以定义一次应用于所有路由的默认过滤器:
型