对于最新的稳定版本,请使用 Spring Security 6.3.1Spring中文文档

对于最新的稳定版本,请使用 Spring Security 6.3.1Spring中文文档

所有基于 HTTP 的通信都应使用 TLS 进行保护。Spring中文文档

本节介绍有关使用有助于使用 HTTPS 使用的 WebFlux 特定功能的详细信息。Spring中文文档

重定向至HTTPS

如果客户端使用 HTTP 而不是 HTTPS 发出请求,则可以将 Spring Security 配置为重定向到 HTTPS。Spring中文文档

以下 Java 配置将所有 HTTP 请求重定向到 HTTPS:Spring中文文档

重定向至HTTPS
@Bean
SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http) {
	http
		// ...
		.redirectToHttps(withDefaults());
	return http.build();
}
@Bean
fun springSecurityFilterChain(http: ServerHttpSecurity): SecurityWebFilterChain {
    return http {
        // ...
        redirectToHttps { }
    }
}

您可以将配置包装在语句周围,以便仅在生产环境中打开。 或者,可以通过查找仅在生产环境中发生的请求的属性来启用它。 例如,如果生产环境添加了名为 的标头,则应使用以下 Java 配置:ifX-Forwarded-ProtoSpring中文文档

X转发时重定向至HTTPS
@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中文文档

代理服务器配置