gpt4 book ai didi

spring - 使用 Spring Security requires-channel 和 Amazon Elastic Load Balancer 的登录循环

转载 作者:行者123 更新时间:2023-12-04 15:15:05 27 4
gpt4 key购买 nike

我正在尝试使用 Amazon Elastic Load Balancer (ELB) 在​​服务器上运行 Spring Security。 ELB 在端口 80 上配置为在端口 8080 上转发到我的应用程序,在端口 443 上也转发到 8080。

<security:intercept-url pattern="/login.xhtml"  access="IS_AUTHENTICATED_ANONYMOUSLY" requires-channel="https"  />

<security:port-mappings>
<security:port-mapping http="80" https="443" />
</security:port-mappings>

每当我访问此页面时,我都会进入登录循环。知道如何解决这个问题吗?不确定 Spring Security 是否对 ELB 将流量从 https 端口 443 转发到端口 8080 上的应用程序这一事实存在问题。

最佳答案

事实证明,Spring Security 使用 ServletRequest.getServerPort() 来确定它是否使用安全端口。我的 tomcat 是使用 8080 和 8443 配置的,所以当 ELB 将请求从 443 转发到我在 8443 上的内部 tomcat 时,webapp 不接受它作为安全端口:

20 Jun 18:16:49,184 ["http-bio-8443"-exec-5] DEBUG org.springframework.security. web.access.channel.RetryWithHttpsEntryPoint  - Redirecting to: /login.xhtml

我也尝试使用代理端口,但无法使其正常工作。
此外,如果您将 spring 安全端口配置为使用 8443,则它不会正确执行重定向(它将应用程序重定向到外部不存在的 8443)。

长话短说……以下设置有效:
ELB 向前 80->80 和 443->443。
设置 tomcat 以使用 80 和 443。
设置端口映射以在 Spring Security 上使用 80 和 443

关于spring - 使用 Spring Security requires-channel 和 Amazon Elastic Load Balancer 的登录循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6405538/

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