JWT 디코더 🔒 데이터가 브라우저 밖으로 나가지 않습니다.

JWT의 header와 payload를 디코딩하고 만료를 확인. 어디에도 전송되지 않습니다.

이 도구에 대해

JWT(JSON Web Token)는 점으로 구분된 3개 부분(header, payload, 서명)으로 이루어집니다. header와 payload는 Base64URL로 인코딩된 JSON일 뿐이어서 토큰을 가진 누구나 읽을 수 있습니다. 그래서 JWT payload에 민감한 데이터를 넣으면 안 됩니다. 이 도구는 토큰을 디코딩하고 만료(exp/nbf)를 확인하며 각 표준 claim을 설명합니다.

많은 JWT 디코더와 달리 여기서는 모든 것이 100% 브라우저에서 실행됩니다. 세션 자격 증명이 담긴 토큰이 어떤 서버로도 전송되지 않습니다.

자주 묻는 질문

JWT는 암호화되어 있나요?

아닙니다. 표준 JWT는 서명되어 있을 뿐 암호화되어 있지 않습니다 — header와 payload는 그냥 Base64URL이라서 키 없이도 누구나 디코딩해서 읽을 수 있습니다. JWT payload 안에는 절대 비밀 정보를 넣지 마세요.

"서명 검증됨"이 실제로 증명하는 것은 무엇인가요?

이는 비밀 키(또는 개인 키)를 가진 사람이 서명한 이후로 토큰의 header와 payload가 변경되지 않았음을 증명합니다. 안에 있는 claim이 사실인지 여부는 증명하지 않습니다 — 그것은 백엔드가 별도로 내리는 인가 판단입니다.

이 도구는 왜 HS256/HS384/HS512 토큰만 검증할 수 있나요?

이들은 대칭 알고리즘이라 검증에는 서명할 때 사용한 것과 같은 공유 비밀 키만 있으면 되며, 이 페이지에 안전하게 입력할 수 있습니다. RS256/ES256 등은 서버를 절대 벗어나서는 안 되는 개인 키를 사용하므로 이 도구로는 검증할 수 없습니다.

header에 "alg": "none"이라고 되어 있으면 무슨 뜻인가요?

이는 토큰이 전혀 서명되지 않았다는 뜻입니다 — 누구나 payload를 수정해도 여전히 "디코딩"이 성공적으로 됩니다. alg: none 토큰을 허용하는 서버는 심각한 취약점을 갖고 있으며, 이 도구는 이를 경고로 표시합니다.

디코딩하거나 검증할 때 제 토큰이나 비밀 키가 서버로 전송되나요?

아닙니다. 디코딩과 서명 검증 모두 Web Crypto API를 사용해 브라우저 안에서 로컬로 실행됩니다 — 입력한 비밀 키는 저장되거나 전송되지 않습니다.