오리데브오리박스

JWT 디코더

JWT 토큰의 헤더와 페이로드를 읽고 만료 시각을 한국 시간으로 보여 줍니다. 토큰은 이 브라우저 밖으로 나가지 않습니다.

JWT 토큰

JWT

헤더

페이로드

자주 보는 페이로드 항목(클레임)

키이름뜻
iss발급자토큰을 만든 서버
sub주체사용자 ID 등 토큰의 주인
aud대상토큰을 받을 서비스
exp만료 시각이 시각이 지나면 거절해야 함 (초 단위 타임스탬프)
nbf사용 시작이 시각 전에는 거절해야 함
iat발급 시각토큰을 만든 시각
jti토큰 ID토큰마다 다른 고유값

exp·nbf·iat은 한국 시간으로 바꿔 보여 주고, 만료됐는지와 남은 시간도 알려 줍니다.

이럴 때 씁니다

코드로 하려면

코드에서 페이로드만 읽을 때는 Base64URL을 디코딩합니다. 서명 검증은 jsonwebtoken(Node.js), PyJWT(파이썬) 같은 라이브러리로 서버에서 하세요.

// 브라우저: 페이로드 읽기 (검증 아님)
const part = token.split(".")[1].replace(/-/g, "+").replace(/_/g, "/");
const json = new TextDecoder().decode(Uint8Array.from(atob(part), c => c.charCodeAt(0)));
JSON.parse(json);

다른 개발·데이터 도구

자주 묻는 질문

JWT는 어떻게 생겼나요?

점(.)으로 나뉜 세 부분입니다. 헤더(알고리즘)와 페이로드(담긴 정보)는 Base64URL로 인코딩한 JSON이고, 마지막은 서명입니다. 헤더와 페이로드는 누구나 디코딩해서 읽을 수 있습니다.

서명도 검증하나요?

아니요. 이 도구는 내용을 읽기만 합니다. 서명이 맞는지는 비밀 키나 공개 키가 있는 서버에서 확인해야 하고, 디코딩된다고 해서 믿을 수 있는 토큰은 아닙니다.

JWT의 단점은 무엇인가요?

한 번 발급하면 만료 전까지 서버에서 바로 무효로 만들기 어렵고, 탈취되면 만료될 때까지 쓸 수 있습니다. 담은 정보가 많을수록 요청마다 보내는 크기도 커집니다. 그래서 만료 시간을 짧게 두고 리프레시 토큰을 함께 씁니다.

JWT와 세션은 무엇이 다른가요?

세션은 서버가 로그인 상태를 저장하고 브라우저는 세션 ID만 가집니다. JWT는 정보와 서명을 토큰 안에 담아 서버가 상태를 저장하지 않아도 됩니다. 대신 강제 로그아웃 같은 처리는 세션이 더 쉽습니다.

토큰을 붙여넣어도 안전한가요?

디코딩은 이 브라우저 안에서만 하고 토큰을 서버로 보내지 않습니다. 그래도 운영 환경의 유효한 토큰은 다른 사람과 공유하지 마세요.