【问题标题】:Load balancer SSL termination with spring security具有弹簧安全性的负载均衡器 SSL 终止
【发布时间】:2014-08-22 19:33:42
【问题描述】:

我有一个在 Tomcat 上运行的带有 Spring Security 过滤器的 Web 应用程序。该应用程序部署在内部网络上,并且仅接受来自该网络内的传入连接。假设这是机器srv_host

同一网络中的另一台机器 lb_host 托管负载平衡器 (HAProxy)。它接受来自外界的 HTTPS 连接并终止 SSL 连接。然后,它通过纯 HTTP 将调用重定向到 srv_host 上的 Web 应用程序。

srv_host 上的 Spring Security 过滤器检查身份验证令牌。如果不存在,它会存储原始请求的 URL,然后重定向到登录页面。登录成功后,它会使用存储的 URL 重定向回请求的页面。

问题是存储的 URL 是 http://srv_host/... 而不是 https://lb_host/...。然后所有未来的调用都开始通过 HTTP 而不是 HTTPS。

有没有办法在负载均衡器工作之前提取原始 URL?我尝试访问 X-Forwarded-For 标头,但未设置。设置此标头是否需要任何特定配置?另外,是否有任何 Spring Security 设置可以自动处理所有这些?

注意:我找到了问题Offloading https to load balancers with Spring Security,但我完全看不懂步骤。非常欢迎提供更多细节和/或步骤。

如果需要任何其他详细信息,请告诉我。

【问题讨论】:

    标签: spring-security load-balancing


    【解决方案1】:

    您可以使用“option forwardfor”在 haproxy 中设置标题。 我将您指向 Haproxy 1.5 文档,因为您暗示它会终止 SSL,自 v1.5 起就支持它。 http://cbonte.github.io/haproxy-dconv/configuration-1.5.html#4.2-option%20forwardfor

    【讨论】:

    • 感谢您的回答!我现在无法测试它,因为我使用了不同的拓扑来绕过这个问题。经过将近一周的等待,我不得不继续做其他事情。 :)
    猜你喜欢
    • 2016-06-04
    • 2020-06-28
    • 1970-01-01
    • 2017-04-01
    • 2018-02-21
    • 1970-01-01
    • 2020-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多