복붙노트

[SPRING] Spring Single Page Application : 로그인, 로그 아웃 후 자동으로 변경되는 CSRF 토큰

SPRING

Spring Single Page Application : 로그인, 로그 아웃 후 자동으로 변경되는 CSRF 토큰

아시다시피, Spring + JavaScript 단일 페이지 애플리케이션에서 클라이언트에게 CSRF 토큰을 어떤 식 으로든 보내야합니다.

권장되는 방법은이 Spring 가이드에서 설명한 CsrfHeaderFilter를 사용하는 것입니다. 이 접근 방식에 따라 응용 프로그램이 시작되면 서버에 GET 요청을 전송하여 토큰을 가져옵니다.

하지만 로그인이나 로그 아웃과 같은 특정 이벤트에서 스프링 보안이 토큰을 변경한다는 것을 알았습니다. CsrfHeaderFilter는 미리 제공되므로 변경 사항을 감지 할 수 없습니다. 따라서, 나는 그러한 사건들에 따라 다른 GET 요청을 보낼 필요가있다.

나는 봄 보안 코드를 엿보고, 변경된 토큰을 이러한 로그인 또는 로그 아웃 요청과 함께 보내어 다른 GET 요청이 저장되도록하는 방법을 찾았습니다. 하지만, 방법을 찾을 수 없습니다.

내가 지금하고있는 것처럼 로그인, 로그 아웃 후 더미 GET 요청을 보내는 것이 좋은 해결책 인 것처럼 보이는 지 알고 싶다. 아니면 더 좋은 방법이 있을까요?

현재이 중복 된 GET 요청을 피할 수있는 방법이 없다면, 이것이 Spring Security의 티켓이 될 수 있을지 궁금해졌습니다.

해결법

  1. ==============================

    1.비슷한 상황으로 CookieCsrfTokenRepository에 대해 이야기했습니다.

    비슷한 상황으로 CookieCsrfTokenRepository에 대해 이야기했습니다.

    내가 작업 한 응용 프로그램에는 REST 서비스를 통한 로그인의 사용자 정의 구현이 있습니다. 서비스는 그 안에 httpServletRequest.logout () 호출을 가지고 있는데, 응답으로 XSRF-TOKEN 쿠키가 지워졌습니다.

    Set-Cookie:XSRF-TOKEN=; Max-Age=0; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/ibdrs; Secure
    

    대답에 새로운 XSRF-TOKEN 값이 없으면 두 가지 옵션이 있습니다.

    두 번째 옵션은 다음과 같은 방법으로 달성 할 수있었습니다.

  2. from https://stackoverflow.com/questions/31654565/spring-single-page-application-csrf-token-changing-silently-after-login-logout by cc-by-sa and MIT license