Spring Boot + JWT 인증 구조에서 로그인 시 refreshToken을 HttpOnly 쿠키에 담아 응답하도록 설정했다.
ResponseCookie refreshTokenCookie = ResponseCookie.from("refreshToken", refreshToken)
.httpOnly(true)
.secure(true)
.path("/api/auth/refresh")
.maxAge(Duration.ofDays(14))
.sameSite("None")
.build();
return ResponseEntity.ok()
.header(HttpHeaders.SET_COOKIE, refreshTokenCookie.toString())
.body(...);
그러나 로컬에서 http://localhost로 서버를 실행했을 때, 브라우저에 쿠키가 저장되지 않았다.
쿠키 설정에서 아래 두 옵션이 문제였다.
따라서 로컬에서는 쿠키 자체가 전송되지 않는다. -> 브라우저 개발자 도구에서도 보이지 않음
환경에 따라 쿠키 설정을 분기 처리하도록 수정하였다.
boolean isLocal = true; // 개발/운영 환경에 따라 설정
ResponseCookie refreshTokenCookie = ResponseCookie.from("refreshToken", refreshToken)
.httpOnly(true)
.secure(!isLocal) // 운영에서는 secure=true
.path("/api/auth/refresh")
.sameSite(isLocal ? "Lax" : "None") // 로컬에서는 Lax로 설정
.maxAge(Duration.ofDays(14))
.build();