HTTP

所有基於 HTTP 的通訊都應使用 TLS 保護。

本節涵蓋關於使用 WebFlux 特定功能的詳細資訊,這些功能有助於 HTTPS 的使用。

重新導向至 HTTPS

如果用戶端使用 HTTP 而非 HTTPS 發出請求,您可以設定 Spring Security 重新導向至 HTTPS。

以下 Java 組態會將所有 HTTP 請求重新導向至 HTTPS

重新導向至 HTTPS
  • Java

  • Kotlin

@Bean
SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http) {
	http
		// ...
		.redirectToHttps(withDefaults());
	return http.build();
}
@Bean
fun springSecurityFilterChain(http: ServerHttpSecurity): SecurityWebFilterChain {
    return http {
        // ...
        redirectToHttps { }
    }
}

您可以將此組態包裝在 if 語句中,使其僅在生產環境中啟用。或者,您可以透過尋找僅在生產環境中發生的請求的屬性來啟用它。例如,如果生產環境新增了一個名為 X-Forwarded-Proto 的標頭,您應該使用以下 Java 組態

當 X-Forwarded 時重新導向至 HTTPS
  • Java

  • Kotlin

@Bean
SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http) {
	http
		// ...
		.redirectToHttps(redirect -> redirect
			.httpsRedirectWhen(e -> e.getRequest().getHeaders().containsKey("X-Forwarded-Proto"))
		);
	return http.build();
}
@Bean
fun springSecurityFilterChain(http: ServerHttpSecurity): SecurityWebFilterChain {
    return http {
        // ...
        redirectToHttps {
            httpsRedirectWhen {
                it.request.headers.containsKey("X-Forwarded-Proto")
            }
        }
    }
}

嚴格傳輸安全

Spring Security 提供了對 嚴格傳輸安全 的支援,並預設啟用它。

Proxy 伺服器組態

Spring Security 與 Proxy 伺服器整合