HTTP
所有基于 HTTP 的通信都应通过 使用 TLS 进行保护。
本节将详细介绍如何使用WebFlux特有的功能来辅助HTTPS的使用。
重定向到HTTPS
如果客户端使用HTTP而非HTTPS发起请求,你可以配置Spring Security将其重定向至HTTPS。
以下Java配置将所有HTTP请求重定向至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 配置:
- 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 与代理服务器集成。