Spring Boot oAuth2 位置 Header

SpringBoot oAuth2 Location Header

我有三个micro-services

所有请求都发送到端口 8080 上的网关服务,将它们重定向到特定服务

@Bean
    public RouteLocator myRoutes (
            RouteLocatorBuilder builder
    ) {
        return builder.routes()
                .route(p -> p.path("/auth/**")
                        .filters(f -> f.rewritePath("^/auth", ""))
                        .uri(authServiceUri))
                .route(p -> p
                        .path("/payments/**")
                        .filters(f -> f.rewritePath("^/payments", ""))
                        .uri(paymentServiceUri)
                )
                .route(p -> p
                        .path("/insurance/**")
                        .filters(f -> f.rewritePath("^/insurance", ""))
                        .uri(insuranceServiceUri)
                )
                .build();
    }

如果我导航到 /insurance oAuth 会将我重定向到登录页面 (api.domain.com/auth/login),之后登录表单会使用用户凭据发出 POST 请求(api.domain.com/auth/login),此请求(如果成功)包含一个将用户重定向到 /oauth/authorize 端点的位置 Header。

问题是这个 header 不包含网关服务 URL (api.domain.com:8080/auth) 但它包含直接服务 url (http://localhost:9999) 我该如何解决这个问题?如何告诉 Spring oAuth 将重定向发送回网关服务器而不是服务 url?

在授权服务器上添加以下内容属性:

server.forward-headers-strategy=framework

可以在 Spring Docs.

中找到关于此的一些附加信息