Vue/SpringBoot: JSESSIONID가 계속 변경되는 이유는 무엇입니까?
P粉163951336
2023-08-29 19:12:16
<p>Spring Boot 3.0.1 백엔드가 포함된 vue 애플리케이션이 있고 CSRF를 사용하고 싶습니다. Vue 프런트엔드와 Spring Boot 백엔드는 서로 다른 시스템에서 제공됩니다. CORS 주제를 완화하기 위해 nginx 역방향 프록시를 사용할 계획이지만 이 문제는 nginx 관련 여부와 관계없이 발생합니다. </p>
<p>제 vue 애플리케이션이 가장 먼저 하는 일은 csrf 토큰을 요청하여 사용자 세션 중에 사용할 수 있도록 전역적으로 저장하는 것입니다. </p>
<p>사용자가 로그인하면 여러 개의 피니아 매장이 초기화됩니다. 그러나 불행하게도 이러한 요청 중에 각 요청과 함께 전송된 JSESSIONID 쿠키는 백엔드에서 무시되고 새로운 JSESSIONID가 생성됩니다. JSESSIONID는 애플리케이션을 사용하고 추가 GET 요청을 하는 동안 계속 변경됩니다</p>
<p>이렇게 하면 초기 JSESSIONID의 "전역" 저장된 CSRF 토큰이 당연히 유효하지 않게 됩니다...</p>
<p>"csrf" 요청 헤더: </p>
<p>"로그인" 제목: </p>
<p>그런 다음 요청에 JSESSIONID 쿠키를 보냈음에도 불구하고 갑자기 5번째 요청에서 새로운 JSESSIONID를 받았습니다(서버에서 전송 - 왜 그럴까요?</p>
질문
<p>내 세션이 계속 변경되는 이유는 무엇인가요? 내 JSESSIONID가 항상 동일하게 유지되어야 하지 않나요? </p>
<p>CSRF를 수행하는 목적은 무엇인가요? (GET이 아닌) 요청을 하기 전에 새 토큰을 요청하시겠습니까? (저는 "credentials: "same-origin"을 사용합니다)</p>
내 SecurityConfig에
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
이 있어서 문제가 발생했습니다... 제가 아는 한, 이를 제거하면 CSRF 사용이 해결되었습니다. p>