【问题标题】:Remove HTTP Strict Transport Security (HSTS) response header in spring oauth2 token API删除 spring oauth2 令牌 API 中的 HTTP 严格传输安全 (HSTS) 响应标头
【发布时间】:2017-02-25 12:58:53
【问题描述】:

我在我的 API 项目中使用 Spring Security 和 Spring Oauth2 和 JWT
Spring oauth 2 提供的用于登录的默认 API 是 /oauth/token

此 API 始终在响应中添加“Strict-Transport-Security: max-age=31536000 ; includeSubDomains”标头。 但我不希望在我的情况下出现这种情况。我已经用下面的源代码删除了 HSTS。

@EnableWebSecurity
public class WebSecurityConfig extends
WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
        // ...
        .headers()
            .httpStrictTransportSecurity().disable();
    }
}

使用上面的代码,我定义的 API 在标头中被删除了 HSTS。但默认 API /oauth/token 仍然在标头中返回 HSTS。 有没有办法做到这一点? 请帮忙。

谢谢, 锡

【问题讨论】:

    标签: spring-security spring-oauth2 hsts


    【解决方案1】:

    我刚刚遇到了同样的问题。 我发现的最佳解决方案是编写一个过滤器,以防止其他人设置 HSTS 标头。

    @Component
    @Order(value = Ordered.HIGHEST_PRECEDENCE)
    public class HstsHeaderPreventionFilter implements Filter {
    
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
    
        }
    
        @Override
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
            chain.doFilter(request, new HttpServletResponseWrapper((HttpServletResponse) response) {
                public void setHeader(String name, String value) {
                    if (!name.equalsIgnoreCase("Strict-Transport-Security")) {
                        super.setHeader(name, value);
                    }
                }
            });
        }
    
        @Override
        public void destroy() {
    
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 2015-09-14
      • 2021-09-16
      • 2020-11-30
      • 1970-01-01
      • 2014-03-20
      • 2018-06-20
      • 2017-04-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多