2016-10-16 8 views
1

내 API 프로젝트에서 스프링 보안 및 스프링 Oauth2 및 JWT를 사용합니다.
기본 ooth 2가 제공 한 로그인 용 기본 API는/oauth입니다./토큰봄 oauth2 토큰 API에서 HTTP 엄격 전송 보안 (HSTS) 응답 헤더 제거

이 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를 반환합니다. 이렇게 할 방법이 있습니까? 도와주세요.

덕분에, 주석

답변

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() { 

    } 

}