【问题标题】:Spring Boot HTTPS redirect loop after Swisscom Application Cloud updateSwisscom 应用程序云更新后的 Spring Boot HTTPS 重定向循环
【发布时间】:2018-08-03 08:11:48
【问题描述】:

我们正在使用 Swisscom 应用程序云来运行我们的 Spring Boot 应用程序。在他们于 2018 年 2 月 22 日(Swisscom Status Page)“迁移到多云环境”之后,我们的应用程序完全无法满足任何请求。

发现问题是 HTTP 到 HTTPS 的自动重定向。我们在应用程序的 SecurityConfiguration 中这样做:

@Configuration
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {

    // [...]

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        // [...]
        if (env.acceptsProfiles(SPRING_PROFILE_PRODUCTION)) {
            http.requiresChannel().anyRequest().requiresSecure();
        }
    }
}

如何将 Spring Boot 配置为仅允许 HTTPS 连接,同时使用 Swisscom Application Cloud 不陷入重定向循环?

【问题讨论】:

  • 或许你可以试试这个配置类中的@Order(-1)注解

标签: spring-boot spring-security swisscomdev


【解决方案1】:

作为向多云迁移的一部分,使用的 IP 范围发生了重大变化。

因此,tomcat buildpack 存在重定向问题,因为这些 IP 不受信任。我们在最新版本的系统 buildpack 中修复了这个问题。

请重新编写您的应用程序以应用这些更改。更多信息可以在我们的文档中找到:https://docs.developer.swisscom.com/devguide-sc/buildpacks/java/caveats.html

更新:

不幸的是,如果您使用带有嵌入式 Tomcat 的 Spring boot,我们的 buildpack 无法为您进行此配置。您必须在应用配置中配置内部代理白名单。请参阅上述文档中的说明。

11 月 28 日更新: 我们已经为 CF 现在与 Envoy 一起使用的新范围更新了 buildpack 中的配置。如果您使用自己的 buildpack,请更新范围。

如中所述: https://docs.spring.io/spring-boot/docs/current/reference/html/howto-embedded-servlet-containers.html#howto-customize-tomcat-behind-a-proxy-server

我们将立即更新文档。

【讨论】:

  • 不幸的是,这不起作用。我已经重新部署了该应用程序,然后以相同的结果对其进行了重新部署:由于重定向过多,每个页面都超时。然后我将此 env 变量添加到 Swisscom 门户的 Env 部分:仍然没有运气。
  • @ssc-hrep3 尝试添加“server.tomcat.protocol-header: X-Forwarded-Proto”。
  • @ssc-hrep3 在 application.yml 配置中,您只需要使用简单的 \ 字符进行正则表达式特殊说明。在 Matthias 答案中用单个 \ 替换所有 \\ 应该没问题...
  • @ssc-hrep3 我完全同意你的看法,这不是一个好的解决方案。这就是为什么我们在 Tomcat 和 java-buildpack 中努力在上游提供此修复程序的原因。对于 tomcat 用例,我们为用户找到了一个开箱即用的解决方案,但是对于 Spring Boot,我们必须接受它。覆盖了整个 100.64/10 范围(这是 Swisscom 云中的标准),我们非常有信心它在未来不会中断。密切关注时事通讯和状态页面,以接收有关可能发生的重大变化的新闻,即使我们试图将它们保持在最低限度。
  • @ssc-hrep3:我们担心随着最新的更新,内部范围再次更改 - 您必须更新配置以包括 11.x 范围,如我们的文档中所述。我们很抱歉没有主动传达这一可能的重大变化,我们会在未来做得更好。
猜你喜欢
  • 1970-01-01
  • 2014-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-20
  • 2016-11-06
  • 2017-02-04
相关资源
最近更新 更多