gpt4 book ai didi

java - 如何让 Spring Security 在跨多个域的负载均衡器后面工作?

转载 作者:IT老高 更新时间:2023-10-28 13:50:38 26 4
gpt4 key购买 nike

我们正在将一个旧的 java/spring 应用程序移到 AWS 中,因此它位于 AWS 应用程序负载均衡器的后面。 Tomcat 直接在 8080 端口上的负载均衡器后面运行,我们在负载均衡器和 tomcat 之间使用 HTTP。

问题是在这种情况下,spring 安全模块无法识别连接是安全的。

我可以通过配置连接来解决这个问题:

<Connector port="8080"
protocol="HTTP/1.1"
connectionTimeout="20000"
proxyName="single-host.example.com"
secure="true"
scheme="https"
redirectPort="443"
proxyPort="443" />

这适用于单个主机名。但是,我需要它来跨多个主机名工作。

我已尝试跳过代理并添加:

server.tomcat.remote_ip_header=X-Forwarded-For
server.tomcat.protocol_header=X-Forwarded-Proto

但这似乎没有任何区别。

有没有办法在这种情况下支持多个主机名?

最佳答案

AWS LoadBalancer 发送 X-Forwarded-Proto代理请求时的 header 。

在 Tomcat 上配置 RemoteIpValve拥有request.secure以及从这些 header 解释的其他请求变量。

<Valve className="org.apache.catalina.valves.RemoteIpValve"/>

您还应该在 Connector 配置中省略设置 proxyName,因为它应该自动来自 Valve。

关于java - 如何让 Spring Security 在跨多个域的负载均衡器后面工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45166572/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com