使用HTTP的Spring安全重定向URL,而需要HTTPS



我的项目体系结构由一个使用SSL配置的负载均衡器组成。SSL配置在负载平衡器处终止,请求通过HTTP转发到WebServer和AppServer。当用户第一次访问应用程序时,SpringSecurity会尝试使用HTTP协议重定向到登录页面。由于负载平衡器在HTTPS上侦听,因此此请求失败。

考虑到WebServer总是在HTTP上转发到AppServer,我该怎么做才能确保Spring Security在创建重定向请求时使用HTTPS协议?

注意:AppServer是Jboss EAP 7.3

通常,简单的http到https重定向会让用户进行额外的跳转,因为他们将返回http,然后需要重定向。这可能是无痛的(尤其是当你使用HSTS时(。通常,从BIG-IP的角度来看,这样做的方法是插入https的X-Forwarded-Proto(xfp(标头(您可以检查源是否在iRule中使用https,或者使用策略插入标头(。

另一部分是让Spring查看xfp头,而不是服务器URL,以确定请求是使用https的。

您是否也尝试过删除重定向上的任何主机或协议名称?我们在任何重定向的相对引用方面都很幸运,但我仍然看到一些应用程序发送了一个带有http的302重定向,然后重定向iRule会反弹回https。

我无法从当前架构的Spring引导中找出如何做到这一点。作为一种解决方法,我们在LoadBalancer上添加了一个IRule,它没有拒绝http请求,而是将它们重定向到HTTPS。

最新更新