【发布时间】:2019-03-18 16:55:13
【问题描述】:
我们将 API 部署在网关后面的 docker 容器中。网关后面的一切都是http,而不是https。结果,当 Spring Security 尝试将用户重定向到授权 Uri 时,它会重定向到 http,这会引发 404。(因为当重定向到达用户的浏览器时,浏览器无法在 http 找到它,只能在https)
我一直无法找到此重定向发生的位置。例如,如果用户访问https://thecompany.com/securedpage,而 Spring Security 发现他们没有经过身份验证(没有 JWT),那么一些代码将重定向到 /oauth2/authorization/{regsitrationId}。
我找到了解析完成的位置(OAuth2AuthorizationRequestRedirectWebFilter.filter(ServerWebExchange exchange, WebFilterChain chain),但我似乎找不到重定向发生的位置。我一直沿着安全过滤器链向下走,但即使在最后一个,响应中也没有标题对于重定向,也没有302 的状态。
如何覆盖重定向以强制执行 https?
【问题讨论】:
-
你使用什么网关?网关应该解决这个问题,而不是应用服务器。
-
你在使用 WebFlux 吗?
-
@NatFar 是的,我正在使用 webflux
标签: java spring spring-boot spring-security spring-security-oauth2