对于最新的稳定版本,请使用 Spring Security 6.4.1spring-doc.cn

HTTP 协议

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

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

重定向到 HTTPS

当客户端使用 HTTP 时,您可以将 Spring Security 配置为在 ServletWebFlux 环境中重定向到 HTTPS。spring-doc.cn

严格的运输安全

Spring Security 提供对严格传输安全性的支持,并默认启用它。spring-doc.cn

代理服务器配置

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

要解决此问题,您可以使用 RFC 7239 指定正在使用负载均衡器。 要使应用程序知道这一点,您需要将应用程序服务器配置为识别 X-Forwarded 标头。 例如,Tomcat 使用 RemoteIpValve,Jetty 使用 ForwardedRequestCustomizer。 或者,Spring 用户可以使用ForwardedHeaderFilterspring-doc.cn

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