HTTP

所有基于 HTTP 的通信,包括 static resources,都应该受到 using TLS的保护。 作为一个框架,Spring Security 不处理 HTTP 连接,因而无法直接提供对 HTTPS 的支持。然而,它确实提供了一些有助于 HTTPS 使用的功能。

Redirect to HTTPS

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

Strict Transport Security

Spring Security 提供对 Strict Transport Security的支持,并在默认情况下启用它。

Proxy Server Configuration

当使用代理服务器时,确保你已正确配置应用程序非常重要。例如,许多应用程序具有一个负载平衡器,它通过将请求转发至 https://192.168.0.107 处的应用程序服务器来响应该对于 https://example.com/ 的请求。如果没有进行适当的配置,应用程序服务器将不知道负载平衡器存在,并将此请求视为 https://192.168.0.107:8080 由客户端请求的。

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

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