所有基于 HTTP 的通信(包括静态资源)都应使用 TLS 进行保护。

作为一个框架,Spring Security 不处理 HTTP 连接,因此不直接提供对 HTTPS 的支持。 但是,它确实提供了许多有助于使用 HTTPS 的功能。

重定向至HTTPS

当客户端使用 HTTP 时,您可以将 Spring Security 配置为在 Servlet 和 WebFlux 环境中重定向到 HTTPS。

严格的运输安全

Spring Security 提供对严格传输安全性的支持,并在默认情况下启用它。

代理服务器配置

使用代理服务器时,请务必确保正确配置应用程序。 例如,许多应用程序都有一个负载平衡器,它通过将请求转发到应用程序服务器来响应请求,如果没有正确的配置,应用程序服务器无法知道负载平衡器的存在,并将请求视为客户端请求的请求。https://example.com/https://192.168.0.107https://192.168.0.107:8080

若要解决此问题,可以使用 RFC 7239 指定正在使用负载均衡器。 要使应用程序意识到这一点,您需要将应用程序服务器配置为知道 X-Forwarded 标头。 例如,Tomcat 使用 RemoteIpValve,Jetty 使用 ForwardedRequestCustomizer。 或者,Spring 用户可以将 ForwardedHeaderFilter 与 Servlet 堆栈一起使用,或者将 ForwardedHeaderTransformer 与 Reactive 堆栈一起使用。

Spring Boot 用户可以使用该属性来配置应用程序。 有关详细信息,请参阅 Spring Boot 文档。server.forward-headers-strategy