DevTool Hub
Guide

JWT 시간 클레임 이해하기: exp, iat, nbf의 차이

JWT의 만료 시간, 발행 시간, 활성 시작 시간 클레임의 정확한 정의와 토큰 검증 시 주의사항을 설명합니다.

작성자: DevTool Hub게시일: 2026-03-25업데이트: 2026-03-25읽는 시간: 약 2

목차

JWT 시간 클레임 이해하기: exp, iat, nbf의 차이

JSON Web Token(JWT)을 다룰 때 가장 흔히 마주하는 페이로드 값들이 바로 시간과 관련된 클레임들입니다. 이 값들이 정확히 무엇을 의미하는지, 그리고 서버에서 어떻게 검증해야 하는지 아는 것은 안전한 인증 시스템 구축의 핵심입니다.

1) exp (Expiration Time): 만료 시간

가장 중요하고 널리 쓰이는 클레임입니다. 토큰이 언제까지 유효한지를 나타내는 숫자(Unix Timestamp)입니다.

  • 역할: 현재 시간이 exp보다 크거나 같으면, 서버는 해당 토큰을 거부해야 합니다.
  • 설정 팁: 액세스 토큰(Access Token)은 가급적 짧게(예: 30분1시간), 리프레시 토큰(Refresh Token)은 길게(예: 7일14일) 설정하는 것이 일반적입니다.

2) iat (Issued At): 발행 시간

토큰이 발급된 시각을 나타냅니다.

  • 역할:
    • 토큰이 얼마나 오래되었는지(Age) 계산할 때 사용합니다.
    • 보안 정책상 "특정 시점 이전에 발급된 모든 토큰을 무효화"해야 할 때, iat를 기준으로 검증할 수 있습니다.
  • 주의: iat가 미래 시점으로 찍혀 있다면, 서버의 시계 동기화(Clock Skew) 문제를 의심해야 합니다.

3) nbf (Not Before): 활성 시작 시간

토큰이 언제부터 유효하기 시작할지를 정의합니다.

  • 역할: 현재 시간이 nbf보다 이전이라면, 토큰은 아직 유효하지 않은 것으로 간주됩니다.
  • 활용 사례: 미래의 특정 시점부터 사용할 수 있는 예약 티켓이나 임시 권한 등을 발급할 때 유용합니다. 대부분의 일반적인 세션 토큰에서는 생략되는 경우가 많습니다.

4) 토큰 검증 시 주의사항: Clock Skew

서버마다 시각이 미세하게 다를 수 있습니다. (예: 서버 A는 12:00:00, 서버 B는 12:00:05)

  • 문제: 발급 서버에서 iat를 찍었는데, 검증 서버의 시계가 더 늦어서 iat가 미래 시간으로 판단되어 검증이 실패할 수 있습니다.
  • 해결책: 대부분의 JWT 라이브러리는 leeway 옵션을 제공합니다. 보통 30초~60초 정도의 오차 범위를 허용하여 네트워크 지연이나 시계 불일치로 인한 억울한 검증 실패를 방지합니다.

5) 요약 가이드

클레임 명칭 검증 로직 필수 여부
exp 만료 시간 현재 < exp 인가? 권장 (강력)
iat 발행 시간 현재 >= iat 인가? 권장
nbf 활성 시작 시점 현재 >= nbf 인가? 선택

내 토큰의 실제 시간 값을 확인하고 싶다면 JWT Decoder에 토큰을 붙여넣어 보세요. 초 단위의 타임스탬프가 사람이 읽을 수 있는 날짜로 즉시 변환되어 나타납니다.

Author

운영 및 검수 정보

이 문서는 DevTool Hub에서 작성하고 유지 보수합니다. 실무에서 자주 발생하는 문제를 기준으로 정리하며, 잘못된 설명이나 오래된 내용은 검토 후 수정합니다.

운영 정책은 Editorial Policy에서 확인할 수 있고, 수정 제보는 Contact로 받을 수 있습니다.

관련 도구

다음 읽을 글

Feedback
내용 개선이나 오류 제보는 Contact로 알려주세요.