날씨 정보를 불러오는 중...

JWT 디코더

토큰을 붙여넣으면 헤더와 페이로드를 해석합니다. 토큰은 브라우저 안에서만 처리되며 서버로 전송되지 않습니다.

헤더 (Header)
-
페이로드 (Payload)
-
JWT의 구조

JWT는 점(.)으로 구분된 세 부분입니다.

헤더.페이로드.서명
eyJhbGci...  .  eyJzdWIi...  .  SflKxwRJ...
  • 헤더 — 서명 알고리즘(alg)과 타입(typ)
  • 페이로드 — 실제 담긴 정보(클레임)
  • 서명 — 앞 두 부분이 위조되지 않았음을 증명하는 값
JWT는 암호화가 아닙니다

가장 중요한 오해입니다. 페이로드는 base64로 인코딩되어 있을 뿐이라 누구나 열어볼 수 있습니다. 이 도구가 비밀키 없이 내용을 보여주는 것이 그 증거입니다.

따라서 JWT에 비밀번호, 주민번호, 카드번호 같은 민감정보를 넣으면 안 됩니다. 서명은 "내용이 바뀌지 않았음"을 보장할 뿐 "내용이 안 보임"을 보장하지 않습니다.

표준 클레임
  • iss (issuer) — 토큰 발급자
  • sub (subject) — 토큰의 주체. 보통 사용자 ID.
  • aud (audience) — 이 토큰을 받아야 할 대상
  • exp (expiration) — 만료 시각. 이 시각이 지나면 거부해야 합니다.
  • nbf (not before) — 이 시각 이전에는 유효하지 않음
  • iat (issued at) — 발급 시각
  • jti (JWT ID) — 토큰 고유 식별자. 재사용 방지에 씁니다.

시각 값은 모두 유닉스 타임스탬프(초)입니다. 밀리초로 착각해서 1000을 곱하거나 나누는 실수가 흔합니다.

서명 검증은 이 도구에서 하지 않습니다

서명을 검증하려면 비밀키나 공개키가 필요한데, 그 키를 웹 도구에 입력하는 것은 위험합니다. 이 도구는 내용 확인 전용입니다. 실제 검증은 서버 쪽 라이브러리에서 해야 합니다.

보안상 주의할 점: alg: none으로 서명 없이 온 토큰을 그대로 신뢰하는 구현 오류가 과거에 큰 취약점이었습니다. 검증할 때는 알고리즘을 서버가 지정하고, 토큰이 알려준 alg를 그대로 따라가지 않도록 해야 합니다.

← 도구 전체 보기