본문으로 건너뛰기

header.payload.signature

JWT 디코더

JSON Web Token(JWT)은 점으로 구분된 Base64url 3개 부분, 즉 헤더, 페이로드, 서명으로 이루어집니다. 토큰을 붙여넣으면 클레임과 시간을 읽을 수 있으며, 여기서는 디코딩만 하고 검증하지는 않습니다.

토큰은 이 탭 안에만 있고 어디로도 전송되지 않습니다. 디코딩된 토큰이 신뢰할 수 있는 토큰이라는 뜻은 아닙니다. 서명은 여기서 확인하지 않습니다.

Scanned by NortonTM Safe Web

한눈에 보기

가격
비용 없음
계정
필요 없음
표준
RFC 7519 (JWT), RFC 7515 (JWS), RFC 7516 (JWE)
서명
검증하지 않음 — 토큰을 디코딩만 합니다
시간
exp, nbf, iat를 UTC로 표시하고 기기의 시계와 비교
업로드
없음 — 토큰은 브라우저 탭 안에 머뭅니다

샘플 토큰과 자주 쓰는 알고리즘

이 페이지의 샘플 토큰은 일회용 키로 HMAC-SHA-256 서명되었습니다. 페이지가 이를 디코딩해 첫 번째 표를 만들었습니다.

샘플 토큰의 클레임
클레임값시간(UTC)
issauth.example.com—
subuser-42—
audapi—
iat17000000002023-11-14 22:13:20 UTC
exp17000036002023-11-14 23:13:20 UTC
자주 쓰는 서명 알고리즘(alg)
alg계열해시서명 크기
HS256HMACSHA-25632 B
HS512HMACSHA-51264 B
RS256RSASSA-PKCS1-v1_5SHA-256256 B (2048-bit key)
ES256ECDSA P-256SHA-25664 B
ES512ECDSA P-521SHA-512132 B
EdDSAEdDSA—64 B (Ed25519)

JWT를 디코딩하는 방법

1

토큰 붙여넣기

앞에 Bearer가 있든 없든 토큰 전체를 붙여넣으세요. 점으로 구분된 3개 부분이 있으며, 암호화된 JWE라면 5개입니다.

2

각 부분 읽기

헤더와 페이로드는 정렬된 JSON으로 나타나고 각 클레임은 표에 나열됩니다. exp, nbf, iat 시간은 UTC로 표시됩니다.

3

시간 확인

페이지는 exp와 nbf를 기기의 시계와 비교해 토큰이 만료되었는지 알려 줍니다. 토큰이 진짜인지는 알려 주지 않습니다.

JWT는 어떻게 구성되나요

JWT(RFC 7519)는 header.payload.signature 형태로 씁니다. 헤더와 페이로드는 JSON 객체이며 각각 패딩 없는 Base64url(RFC 4648 5절)로 인코딩되고, 서명은 같은 인코딩의 원시 바이트입니다. 디코딩은 인코딩만 바꾸므로 토큰을 가진 사람은 누구나 페이로드를 읽을 수 있습니다. 비밀 정보를 넣지 마세요. 헤더의 alg는 서명 알고리즘을 나타내며, HS256(SHA-256을 쓰는 HMAC, 서명 32바이트)이나 RS256(SHA-256을 쓰는 RSA, 2048비트 키에서 256바이트)이 그 예입니다.

이 페이지는 토큰을 디코딩할 뿐 그 이상은 하지 않습니다. 서명 검증에는 키가 필요하므로 서명은 확인하지 않으며, 토큰이 진짜인지, 폐기되었는지, 서버가 받아들이는지는 알 수 없습니다. 1970-01-01 UTC 이후의 초를 세는 exp, nbf, iat 클레임을 기기의 시계와 비교하고 UTC 날짜·시간으로 표시합니다. 5개 부분으로 된 토큰은 JWE이며 내용이 암호화되어 있으므로 헤더만 보여 줍니다.

JWT 질문

JWT를 어떻게 디코딩하나요?

상자에 토큰을 붙여넣으세요. 페이지는 점을 기준으로 나누고, 앞의 두 부분을 Base64url에서 변환해 JSON으로 보여 줍니다. 앞의 Bearer는 무시됩니다. 샘플 토큰의 헤더는 {"alg":"HS256","typ":"JWT"}입니다.

이 페이지가 서명을 검증하나요?

아니요. 검증에는 비밀 키나 공개 키가 필요한데 이 페이지는 키를 요구하지 않습니다. 여기서 디코딩되는 토큰도 위조되었거나 변조되었거나 폐기되었을 수 있습니다. 서명은 직접 운영하는 서버 코드에서 관리되는 JWT 라이브러리로 검증하세요.

exp, iat, nbf는 무엇을 뜻하나요?

1970-01-01 UTC 이후의 초로 나타낸 시간입니다(RFC 7519). exp는 토큰이 만료되는 시간, nbf는 그 이전에는 토큰을 받아들이면 안 되는 시간, iat는 토큰이 발급된 시간입니다. 샘플 토큰에서 iat 1700000000은 2023-11-14 22:13:20 UTC이고 exp 1700003600은 한 시간 뒤입니다.

실제 토큰을 여기에 붙여넣어도 안전한가요?

토큰은 브라우저 탭 안에만 있고 어디로도 전송되지 않습니다. 그래도 유효한 토큰은 자격 증명입니다. 가진 사람은 누구나 만료될 때까지 사용할 수 있습니다. 본인이 소유한 토큰만 붙여넣고, 가능하면 만료된 토큰이나 테스트 토큰을 쓰세요.

토큰이 왜 5개 부분으로 되어 있나요?

5개 부분으로 된 토큰은 암호화된 JSON Web Token인 JWE(RFC 7516)입니다. 페이로드가 수신자를 위해 암호화되어 있으므로 이 페이지는 헤더와 각 부분의 크기만 보여 줍니다. 내용은 여기서 읽을 수 없습니다.

"not Base64url" 또는 "not JSON"은 무슨 뜻인가요?

앞의 두 부분은 각각 JSON 객체로 디코딩되는 Base64url 텍스트여야 합니다. 페이지는 문제가 있는 부분과 이유를 알려 줍니다. 알파벳에 없는 문자, UTF-8이 아닌 바이트, 또는 특정 줄과 열에 오류가 있는 JSON입니다. 토큰이 잘렸거나 문자가 더 붙어 있는 경우가 흔한 원인입니다.