JWT 기술분석 : access, refresh token의 개념과 관리전략

한솔·2025년 2월 13일

JWT(JSON Web Token)란?
JWT는 사용자가 로그인하면 발급되는 디지털토큰으로 사용자의 인증정보를 담고있다. 주로 웹 서비스에서 로그인상태를 유지하는데 사용되며 Access Token과 Refresh Token 두가지 종류가 있다.

Access Token과 Refresh Token의 개념

  1. Access Token
    Access Token은 사용자가 로그인했음을 증명하는 출입증과 같다. 이를 가지고 있어야 서버에서 데이터를 요청할 수 있다.

특징

  • 로그인하면 발급됨
  • 짧은 유효기간(보통 15분~1시간)
  • API요청 시 Authorization: Bearer <access_token>에 포함해 사용
  • 탈취되면 보안 위험이 있음
  1. Refresh Token
    Refrech Token은 Access Token이 만료되었을 때, 새로운 Access Token을 발급받기 위한 갱신 키 역할을 한다.

특징

  • 로그인하면 Access Token과 함께 발급됨
  • 유효기간이 길다(7일~30일)
  • 만료된 Access Token을 갱신하는 역할
  • 탈취 시 보안 위험이 크므로 안전하게 보관해야 함

JWT가 동작하는 방식
1. 사용자가 로그인하면 서버가 Access Token과 Refresh Token 발급함
2. 클라이언트(웹/앱)가 Access Token을 API요청에 포함해 서버에 전송함
3. 서버가 Access Token을 검증하고 요청을 처리함
4. Access Token이 만료되면 클라이언트가 Refrech Token을 사용해 새로운 Access Token을 요청함
5. 서버가 Refresh Token을 확인하고 새로운 Access Token을 발급함
6. Refresh Token까지 만료되면 사용자는 다시 로그인해야 함

안전한 JWT관리법
1. Access Token 저장방식

  • 메모리저장(권장)-> XSS 공격을 방어할 수 있음
  • HTTP-Only쿠키 저장-> 브라우저에서 접근할 수 없도록 보호
  • LocalStorage(비추천)->XSS공격에 취약함
  1. Refresh Token저장방식
  • Secure HTTP-Only쿠키(권장)-> 쿠키에 저장하고 httpOnly설정
  • 데이터베이스 저장-> 서버에서 관리하고 요청할 때 검증
  • Redis사용-> 빠른 접근과 관리가 가능
  1. 보안강화 전략
  • Refresh Token을 한 번만 사용하도록 설정(재사용 방지)
  • 로그아웃하면 Refresh Token을 즉시 폐기
  • JWT 서명을 검증해 변조 여부 확인
  • IP 및 User-Agent변경 감지 후 추가 인증요구

JWT 사용 시 주의할 점

  • Access Token의 유효기간을 짧게 설정해 탈취위험을 줄이기
  • Refresh Token은 서버에서 안전하게 보관하기
  • HTTPS를 사용해 네트워크에서 토큰이 노출되지 않도록 하기

0개의 댓글