【问题标题】:What class/method in Spring Security handles redirecting to /oauth2/authorization/{registrationId}? Need to override for containerSpring Security 中的哪些类/方法处理重定向到 /oauth2/authorization/{registrationId}?需要覆盖容器
【发布时间】: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


【解决方案1】:

您是否按照 spring 安全文档中的“Proxy Server Configuration”章节来配置您的网关?

您需要通过设置 X-Forwarded 标头并在您的应用程序中配置 ForwardedHeaderFilter 来让您的应用程序了解该配置(https --> gateway --> http --> your_app)

【讨论】:

    猜你喜欢
    • 2021-03-16
    • 1970-01-01
    • 1970-01-01
    • 2020-07-04
    • 1970-01-01
    • 2013-11-05
    • 2019-05-24
    • 2022-01-06
    • 2015-01-12
    相关资源
    最近更新 更多