JWT 디코더
JSON Web Token을 즉시 디코딩, 검증, 재서명하세요 — 모든 과정이 브라우저 안에서 이루어집니다.
브라우저에서 JWT를 처음부터 만들고 서명합니다. 키는 이 페이지를 벗어나지 않습니다.
클라이언트 사이드 JWT 디코딩은 어떻게 동작할까요 — 그리고 왜 중요할까요?
JSON Web Token은 언뜻 보면 해독할 수 없는 문자 덩어리처럼 보이지만, 실제로는 점(.)으로 연결된 세 개의 Base64URL 인코딩 조각일 뿐입니다: 헤더, 페이로드, 서명이 바로 그것입니다. 헤더와 페이로드를 디코딩하는 것은 암호화와는 전혀 무관한 작업이며, 토큰만 있으면 누구나 그 안의 클레임을 읽을 수 있습니다. 바로 이 때문에 민감한 정보를 JWT 페이로드에 넣어서는 안 됩니다. 문제는 사람들이 확인하려는 토큰이 대부분 버려도 되는 테스트용 데이터가 아니라는 점입니다. 실제 운영 중인 애플리케이션의 세션 토큰이거나, API 접근 토큰이거나, 디버깅 도중 브라우저 개발자 도구에서 그대로 가져온 로그인 쿠키인 경우가 많습니다 — 즉 잘못된 사람의 손에 들어가면 실제 접근 권한을 내주는 진짜 자격 증명입니다. 그런 토큰을 정체를 알 수 없는 웹사이트에 붙여넣는 순간, 여러분의 세션을 그 서버에 통째로 넘기는 셈이 됩니다.
이 도구는 절대 그런 방식으로 동작하지 않습니다. 토큰을 붙여넣는 즉시 헤더와 페이로드는 브라우저에서 실행되는 순수 JavaScript로 디코딩됩니다 — 점을 기준으로 분리하고, Base64URL로 디코딩하고, JSON으로 파싱하는 과정이 전부이며, 그 어느 것도 외부로 전송되지 않습니다. 서명 검증 역시 마찬가지로, 최신 브라우저에 내장된 Web Crypto API(`SubtleCrypto`)를 이용합니다: HMAC 계열 알고리즘(HS256, HS384, HS512)은 직접 입력한 비밀키로, RSA 계열 알고리즘(RS256, RS384, RS512)은 PEM 형식으로 붙여넣은 공개키로 검증됩니다. 암호화에 사용되는 비밀키와 검증 과정 자체 모두 해당 탭 안에서만 머물며, 페이지를 새로고침하면 토큰, 비밀키, 공개키까지 모든 것이 사라집니다.
토큰을 붙여넣으면 헤더와 페이로드가 보기 좋게 정리되어 표시되며, 표준 `exp`, `iat`, `nbf` 클레임을 사람이 읽기 쉬운 날짜 형식으로 함께 보여줍니다. 토큰의 `exp`가 이미 지난 경우에는 "만료됨" 배지가 명확히 표시되어, "로그아웃됐어요"라는 버그 신고가 사실은 단순히 토큰 만료 때문인지 빠르게 확인할 수 있습니다. 알고리즘이 HS256/384/512 또는 RS256/384/512라면, 일치하는 비밀키나 공개키를 입력해 서명이 진짜인지, 혹은 변조되었는지 확인할 수 있습니다. 이 범위를 벗어나는 알고리즘(ES256이나 서명이 없는 `none` 등)도 디코딩 자체는 정상적으로 되지만, 검증 결과를 억지로 꾸며내는 대신 검증 기능 자체를 제공하지 않습니다. 로컬 개발 환경에서는 수정 가능한 헤더/페이로드 입력란을 통해 클레임을 바꿔볼 수 있습니다 — 예를 들어 사용자 ID나 역할(role)을 변경한 뒤, 테스트 서버가 사용하는 것과 동일한 HS256 비밀키로 토큰을 재서명할 수 있습니다. 이는 전체 로그인 흐름을 거치지 않고도 인가(authorization) 로직을 테스트하는 흔한 방법입니다.
JWT의 페이로드는 디코딩하고 나면 그냥 읽기 쉬운 JSON이기 때문에, 깊이 중첩된 클레임을 더 자세히 살펴보고 싶다면 JSON Formatter & Validator 도구와 함께 사용하면 좋습니다. 한 가지 보안상 다시 한번 강조할 점은, 디코딩 자체에는 비밀키가 전혀 필요하지 않으므로, 확인이 끝난 토큰은 그 순간부터 민감 정보로 취급해야 한다는 것입니다. 원래 짧게만 쓰기로 되어 있던 자격 증명이라면, 이 도구 외에 어디에 또 붙여넣었는지 확실하지 않은 경우 반드시 갱신(rotate)하시기 바랍니다.
자주 묻는 질문
JWT를 디코딩할 뿐 아니라 서명도 검증할 수 있나요?
네. HMAC(HS256/384/512)과 RSA(RS256/384/512) 서명 검증을 모두 지원합니다.
토큰이나 시크릿이 어디로 전송되나요?
아니요. 디코딩, 검증, 재서명은 모두 Web Crypto API를 사용해 브라우저에서 로컬로 처리됩니다.
페이로드를 수정해 새로 서명한 토큰을 만들 수 있나요?
네. 헤더/페이로드 JSON을 수정하고 HMAC 시크릿으로 다시 서명하면 새 토큰을 얻을 수 있습니다.