HTTP
作为一个框架,Spring Security 不处理 HTTP 连接,因此不直接提供对 HTTPS 的支持。但是,它确实提供了一些有助于使用 HTTPS 的功能。
重定向到 HTTPS
严格传输安全
Spring Security 提供了对Strict Transport Security的支持,并且默认启用它。
代理服务器配置
在使用代理服务器时,确保正确配置应用程序非常重要。例如,许多应用程序都有一个负载均衡器,它通过将请求转发到位于 https://192.168.0.107
的应用服务器来响应对 https://example.com/
的请求。如果没有正确的配置,应用服务器将无法知道负载均衡器的存在,并会将请求视为客户端直接请求了 https://192.168.0.107:8080
。
要解决这个问题,你可以使用 RFC 7239 来指定正在使用负载均衡器。为了让应用程序意识到这一点,你需要配置你的应用服务器以识别 X-Forwarded 头。例如,Tomcat 使用 RemoteIpValve,而 Jetty 使用 ForwardedRequestCustomizer。或者,Spring 用户可以使用 ForwardedHeaderFilter 与 Servlet 堆栈配合使用,或使用 ForwardedHeaderTransformer 与 Reactive 堆栈配合使用。
Spring Boot 用户可以使用 server.forward-headers-strategy
属性来配置应用程序。有关详细信息,请参阅 Spring Boot 文档。