HTTP

所有基於 HTTP 的通訊,包括靜態資源,都應使用 TLS 進行保護。

作為一個框架,Spring Security 不處理 HTTP 連線,因此不直接提供對 HTTPS 的支援。然而,它確實提供了一些有助於使用 HTTPS 的功能。

重定向到 HTTPS

當客戶端使用 HTTP 時,您可以在 ServletWebFlux 環境中配置 Spring Security 以重定向到 HTTPS。

Strict Transport Security

Spring Security 支援 Strict Transport Security 並預設啟用它。

代理伺服器配置

使用代理伺服器時,務必確保應用程式配置正確。例如,許多應用程式都有一個負載均衡器,它響應 https://example.com/ 的請求,並將請求轉發到位於 https://192.168.0.107 的應用伺服器。如果沒有正確配置,應用伺服器將不知道負載均衡器的存在,並會將請求視為客戶端請求了 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 文件