2017-02-20 7 views
0

Angular 기반 웹 애플리케이션은 다른 도메인 및 컨텍스트 경로에서 실행되는 엔터프라이즈 포털과 통합되어 있습니다. 들어오는 요청의 유효성을 검사하기 위해 스프링 보안 기반 CSRF 토큰을 사용하고 있습니다. 응용 프로그램은 로컬에서 완벽하게 작동하지만 Angular가 XSRF-Token을 읽고 요청 헤더의 X-XSRF-Token을 API 호출로 설정할 수 없기 때문에 포털과 통합하면 모든 게시 호출이 실패합니다. 조사한 결과, 포털과 컨텍스트 경로가 다르다는 것을 알았습니다. 따라서 스프링은 Path, Expires 및 Null로 도메인을 설정하여 XSRF-Token을 설정하고 있습니다. 스프링이 생성 할 때 특정 쿠키 경로에 XSRF-Token을 설정할 수있는 방법이 있습니까?CSRF 토큰을 다른 컨텍스트 경로로 설정하는 방법

참고 : 필터를 만들고 요청 헤더에서 쿠키를 읽고 원하는 경로로 브라우저에 새 쿠키를 놓을 수있는 대체 솔루션이 있습니다. 구성 수준에서 솔루션을 찾고 있습니다. 구성 보안 (Java 파일)에서

답변

0

, 그것은 추가 할 수있다 :

private CsrfTokenRepository getCsrfTokenRepository() { 
    CookieCsrfTokenRepository tokenRepository = CookieCsrfTokenRepository.withHttpOnlyFalse(); 
    tokenRepository.setCookiePath("/"); 
    return tokenRepository; 
} 

및 기능 configure(...)에서 변경, 라인 :

http.csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse()).and()...

http.csrf().csrfTokenRepository(this.getCsrfTokenRepository()).and()...

쿠키의 경로를 사용자 설정하는 솔루션을 사용할 수 있습니다. XSRF-TOKEN.