피드로 돌아가기
Spring Boot JWT Authentication: The Complete Setup Most Tutorials Get Wrong
Dev.toDev.to
Security

Refresh Token Rotation 및 HttpOnly Cookie 적용을 통한 JWT 보안 최적화

Spring Boot JWT Authentication: The Complete Setup Most Tutorials Get Wrong

Davide Mibelli2026년 5월 12일9intermediate

Context

단순 JWT 발급 및 검증만 수행하는 일반적인 튜토리얼 방식의 보안 취약점 분석. Access Token 만료 시간 연장으로 인한 보안 사고 위험과 Token Revocation 부재라는 아키텍처적 한계 직면.

Technical Solution

  • Access Token은 15분 단기 만료 설정 및 JS 접근 불가한 Memory 영역 저장으로 XSS 공격 최소화
  • Refresh Token은 7일 유효기간 설정 및 HttpOnly, Secure, SameSite=Strict 속성 부여한 Cookie 기반 저장
  • Rotation 메커니즘 도입을 통한 Refresh 요청 시 신규 Token 발급 및 기존 Token 즉시 무효화 처리
  • Token Reuse Detection 로직 구현으로 탈취된 Token 사용 시 해당 User의 모든 Token Family 즉시 Revoke 처리
  • Cookie Path를 /auth/refresh로 제한하여 불필요한 요청 시 Token 노출을 방지하는 Attack Surface 축소
  • Redis나 DB 기반의 Revocation Store를 구축하여 상태 기반의 Token 제어 가능 구조 설계

- Access Token 만료 시간을 15분 내외로 짧게 설정하고 있는가? - Refresh Token을 JS에서 접근 불가능한 HttpOnly Cookie에 저장했는가? - Refresh Token 사용 시 새로운 Token을 발급하는 Rotation 로직이 구현되었는가? - 탈취된 Token의 재사용 시도를 감지하고 전체 세션을 무효화하는 로직이 포함되었는가? - Cookie의 Path 설정을 통해 특정 엔드포인트에서만 전송되도록 최적화했는가?

원문 읽기