Spring Security 不会将 HTTP 重定向到 HTTPS
Posted
技术标签:
【中文标题】Spring Security 不会将 HTTP 重定向到 HTTPS【英文标题】:Spring Security does not redirect HTTP to HTTPS 【发布时间】:2018-01-12 12:35:07 【问题描述】:我正在使用 Spring 4 和 Tomcat 7 实现一个 Web 应用程序。
我使用 SSL 证书在 Tomcat 上运行应用程序,它工作正常,但我想强制任何 HTTP 请求重定向到其 HTTPS 请求。
我已经搜索了 Spring Security 并添加了一些配置如下:
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabled = true, proxyTargetClass = true)
public class CoreSecurityConfig extends WebSecurityConfigurerAdapter
@Override
protected void configure(HttpSecurity http) throws Exception
http
.antMatcher("/**")
.requiresChannel()
.anyRequest().requiresSecure();
http
.antMatcher("/**")
.portMapper()
.http(80).mapsTo(443);
但它似乎无法正常工作,并且 Spring Security 没有进行重定向。
这个配置有问题吗?
【问题讨论】:
您可以尝试添加http.headers().httpStrictTransportSecurity()
告诉客户端他们需要使用HTTPS。
@ngreen 我将重定向配置添加到 tomcat web.xml 并且它工作正常。无论如何,感谢您的帮助。
【参考方案1】:
感谢Steps to Configure SSL on Tomcat and Setup Auto Redirect from HTTP to HTTPS,通过将重定向配置添加到Tomcat 的web.xml
,Tomcat 会进行重定向。
<security-constraint>
<web-resource-collection>
<web-resource-name>My Application</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
【讨论】:
嗨@BabakBehzadi,这个解决方案有效,谢谢!如果您了解 HttpSecurity 端口映射器为什么不起作用(根据您的问题),请分享,因为它对我也不起作用,我很想了解原因。以上是关于Spring Security 不会将 HTTP 重定向到 HTTPS的主要内容,如果未能解决你的问题,请参考以下文章
Spring security Login 不会将我的表单(POST)传播到控制器
负载均衡器后面带有 Spring Security 的 Spring Boot:将 HTTP 重定向到 HTTPS
Spring Security 使用基于xml的http认证
使用 spring-session 和 spring-cloud-security 时,OAuth2ClientContext (spring-security-oauth2) 不会保留在 Redis
Spring Boot Security PreAuthenticated Scenario with Anonymous access