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支援嚴格傳輸安全並預設啟用它。
代理伺服器配置
Spring Security與代理伺服器整合。