此版本仍在开发中,尚未被视为稳定版本。如需最新稳定版本,请使用 Spring Security 7.0.4spring-doc.cadn.net.cn

HTTP

所有基于 HTTP 的通信都应通过使用 TLS进行保护。spring-doc.cadn.net.cn

此部分涵盖了使用与HTTPS用法相关的WebFlux特定功能的详细信息。spring-doc.cadn.net.cn

重定向到 HTTPS

如果客户端使用 HTTP 而非 HTTPS 发起请求,你可以配置 Spring Security 将其重定向到 HTTPS。spring-doc.cadn.net.cn

以下Java配置将任何HTTP请求重定向到HTTPS:spring-doc.cadn.net.cn

重定向到 HTTPS
@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配置:spring-doc.cadn.net.cn

重定向到HTTPS(当存在X-Forwarded头部时)
@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")
            }
        }
    }
}

HTTP 严格传输安全

Spring Security 提供对严格传输安全(Strict Transport Security)的支持,并默认启用该功能。spring-doc.cadn.net.cn

代理服务器配置