HTTP
本站(springdoc.cn)中的内容来源于 spring.io ,原始版权归属于 spring.io。由 springdoc.cn 进行翻译,整理。可供个人学习、研究,未经许可,不得进行任何转载、商用或与之相关的行为。 商标声明:Spring 是 Pivotal Software, Inc. 在美国以及其他国家的商标。 |
所有基于HTTP的通信都应该 使用TLS 进行保护。
本节涵盖了关于使用WebFlux特定功能协助HTTPS使用的细节。
重定向到HTTPS
如果客户端使用HTTP而不是HTTPS发出请求,你可以配置Spring Security重定向到HTTPS。
下面的Java配置将任何HTTP请求重定向到HTTPS。
Redirect to 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配置。
Redirect to HTTPS when X-Forwarded
-
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 整合代理服务器。