JWT 디코더

JWT 토큰의 헤더와 페이로드를 풀어 보고 만료 시각을 한국 시간으로 보여줍니다.

서명은 검증하지 않습니다. 내용을 보여 줄 뿐이며, 토큰이 위조되지 않았다는 보장은 아닙니다.

사용 방법

  1. 토큰을 붙여 넣으면 헤더·페이로드를 풀어 보기 좋은 JSON으로 보여 줍니다. BearerAuthorization: 접두사, 앞뒤 따옴표는 자동으로 뺍니다.
  2. exp(만료), nbf(사용 시작), iat(발급) 시각을 한국 시간으로 바꾸고 지금 만료되었는지 알려 줍니다.
  3. alg가 none인 토큰, 밀리초로 잘못 넣은 시각, 큰 정수처럼 흔한 실수는 경고로 표시합니다.

JWT 구조

JWT는 점(.)으로 나뉜 세 부분입니다: 헤더.페이로드.서명. 헤더와 페이로드는 JSON을 Base64URL로 바꾼 것이고, 서명은 앞의 두 부분을 비밀 키나 개인 키로 서명한 값입니다. 점이 4개(다섯 부분)이면 암호화된 JWE라 키 없이는 내용을 볼 수 없습니다.

표준 클레임 (RFC 7519)

이름원어
issIssuer토큰을 발급한 곳 (예: https://auth.example.com)
subSubject토큰의 주인, 보통 사용자 ID
audAudience토큰을 받을 대상 서비스
expExpiration Time만료 시각. 이 시각 이후에는 받아들이면 안 됨
nbfNot Before이 시각 전에는 받아들이면 안 됨
iatIssued At발급 시각
jtiJWT ID토큰 고유 번호 (재사용 방지)

만료 판정은 RFC 7519에 따라 지금 시각이 exp와 같거나 늦으면 만료, nbf보다 이르면 사용 전으로 봅니다. 실제 서버는 시계 오차를 감안해 몇십 초의 여유를 두는 경우가 많습니다.

자주 묻는 질문

JWT 내용은 누구나 볼 수 있나요?

네. 일반적인 JWT(JWS)는 헤더와 페이로드를 Base64URL로 바꿨을 뿐 암호화하지 않으므로, 토큰을 가진 사람은 누구나 내용을 읽을 수 있습니다. 서명은 내용이 바뀌지 않았음을 보장할 뿐 숨겨 주지 않습니다. 비밀번호나 주민등록번호 같은 민감 정보는 페이로드에 넣으면 안 됩니다.

이 도구로 서명이 올바른지도 확인할 수 있나요?

아니요. 이 도구는 디코딩만 하고 서명은 검증하지 않습니다. 서명 검증에는 HS256이면 비밀 키, RS256·ES256이면 공개 키가 필요하며, 서버에서 신뢰할 수 있는 라이브러리로 해야 합니다. 여기서 내용이 보인다고 해서 위조되지 않은 토큰이라는 뜻은 아닙니다.

exp가 5만 년 뒤 같은 이상한 날짜로 나와요.

JWT 표준(RFC 7519)은 exp·iat·nbf를 "초" 단위 숫자로 정합니다. 밀리초(자바스크립트 Date.now() 값)를 그대로 넣으면 1,000배 먼 미래가 되어 사실상 만료되지 않는 토큰이 됩니다. 이 도구는 그런 값을 발견하면 경고합니다.

만료 시각이 서버 로그와 9시간 차이 나요.

exp 값 자체에는 시간대가 없고, 서버 로그는 보통 UTC로 찍히기 때문입니다. 이 도구는 한국 시간(UTC+9)으로 보여 주므로 UTC 로그보다 9시간 늦게 표시됩니다. 원래 숫자도 함께 보여 주니 두 값을 비교해 보세요.

실제 서비스 토큰을 붙여 넣어도 괜찮나요?

이 페이지는 입력한 토큰을 브라우저 안에서만 해석하고 어디에도 전송하거나 저장하지 않습니다. 그래도 유효한 액세스 토큰은 그 자체로 로그인 권한이므로, 다른 사람과 화면을 공유하거나 채팅에 붙여 넣지 않도록 주의하고 가능하면 만료된 토큰으로 확인하세요.

이 도구가 도움이 되었다면 공유해 주세요

계산 근거

이 계산기가 쓰는 세율·요율·기준의 출처입니다. 숫자가 맞는지 직접 확인해 보세요.

계산 결과가 이상한가요? 알려 주세요.

계산 결과는 참고용이며 법적 효력이 없습니다.

다른 도구