使用Spring Security需要通道和Amazon Elastic Load Balancer的登录循环

我正在尝试使用Amazon Elastic Load Balancer(ELB)在服务器上运行Spring安全性. ELB在端口80上配置为在端口8080和端口443上转发到我的应用程序以转发到8080.

每当我访问此页面时,我都会进入登录循环.不知道怎么解决这个问题?不确定Spring Security是否存在问题,因为ELB是从端口8080的https端口443到我的应用程序的前向流量.

最佳答案
事实证明,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 Cloud为Spring Boot应用程序提供Netflix OSS集成。 提供的功能模块包括服务发现(Eureka),断路...
Spring Cloud 学习笔记;maven配置;入门学习;基于Spring Boot 实现;服务端配置,客户端配置;
可以毫不夸张地说,这篇文章介绍的 Spring/SpringBoot 常用注解基本已经涵盖你工作中遇到的大部分常用的...
Spring中各种方式进行日期时间处理,有作用于单个实体的,也有作用于全局的,有作用于请求入参的,有作...
跨域资源共享(Cross-origin resource sharing)(CORS)是W3C的标准,大部分的浏览器都实现了这个标准...
Spring Boot使创建基于Spring的应用程序变得轻松,大部分的SpringBoot应用程序都只需要很少的Spring配置...