HTTP

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

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

重定向到 HTTPS

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

严格传输安全

Spring 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 文档