HTTP

所有基于 HTTP 的通信,包括静态资源,都应该通过使用 TLS来保护。

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

重定向到 HTTPS

当客户端使用 HTTP 时,您可以配置 Spring Security 在ServletWebFlux环境中都重定向到 HTTPS。

严格传输安全 (HSTS)

Spring Security 提供对严格传输安全 (HSTS)的支持,并默认启用它。

代理服务器配置

使用代理服务器时,务必确保已正确配置应用程序。例如,许多应用程序都有一个负载均衡器,它通过将请求转发到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(响应式堆栈)。

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