Spring Boot oAuth2 位置 Header
SpringBoot oAuth2 Location Header
我有三个micro-services
- 网关(Spring 云网关)
- 安全
- 保险
所有请求都发送到端口 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.
中找到关于此的一些附加信息
我有三个micro-services
- 网关(Spring 云网关)
- 安全
- 保险
所有请求都发送到端口 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.
中找到关于此的一些附加信息