JWT 디코더
JSON Web Token을 안전하게 디코딩하고 검사합니다.
인코딩된 JWT
헤더
페이로드
서명
JSON Web Token 디코딩과 검증
소개
JSON Web Token(JWT)는 현대 웹 앱의 무상태 인증 표준입니다. JWT는 점(.)으로 구분된 3개의 Base64URL 인코딩 세그먼트입니다: header.payload.signature. 헤더는 알고리즘을 선언하고, 페이로드는 사용자에 대한 클레임(sub, exp, iss, 커스텀 필드)을 운반하며, 서명은 토큰이 변조되지 않았음을 증명합니다. 본 디코더는 어떤 JWT든 즉시 검사하고, 서명을 검증하며(시크릿 또는 공개키 보유 시), 만료/미발효 토큰을 감지합니다 — 모두 브라우저 내에서, 토큰을 어디로도 보내지 않고.
작동 원리
도구가 점으로 토큰을 분할하고, 헤더와 페이로드를 Base64URL 디코딩 후 JSON으로 표시(구문 강조). 세 번째 세그먼트(서명)는 원본 그대로 표시. HS256/384/512는 공유 시크릿을 입력하면 HMAC 계산 + 토큰 서명과 비교 — 일치하면 토큰이 진짜. RS256/RS384/RS512와 ES256/ES384/ES512는 공개키(PEM 형식)를 입력해 Web Crypto API로 검증. 표준 클레임(exp, iat, nbf)은 사람이 읽기 쉬운 카운트다운으로 변환.
언제 유용한가
인증 문제 디버깅('왜 내 API가 이 토큰을 거부하지?'), Auth0/Firebase/Supabase 토큰의 클레임 확인, 토큰 만료 동작 검증, 신뢰 전 서드파티 JWT 내용 검사, 처음 보는 API의 인증 체계 역공학, 학습용(학생들에게 JWT 내부를 시연).
자주 묻는 질문
디코딩과 검증은 같은 건가요?
아닙니다. 누구나 JWT를 디코딩(데이터는 Base64로 인코딩만 됨, 암호화 아님)해 모든 클레임을 볼 수 있습니다. 검증은 시크릿/공개키로 서명을 암호학적으로 확인 — 토큰이 진짜고 변조되지 않았다는 의미. 신뢰 전 항상 검증하세요.
만료된 토큰의 내용을 믿을 수 있나요?
일반적으로 안 됩니다. 만료 클레임(exp)이 재생 공격을 방지합니다. 일부 앱은 장기 토큰을 쓰지만, 보통 exp가 현재 시간 이후가 아닌 토큰은 거부해야 합니다.
JWT를 localStorage에 저장해도 안전한가요?
논쟁적입니다. localStorage는 XSS에 취약합니다. 모범 사례: refresh 토큰은 httpOnly 쿠키, 짧은 수명의 access 토큰(~15분)은 메모리에 보관. 클라이언트 저장 토큰만으로 권한을 강제하지 마세요 — 서버는 항상 매 요청마다 서명과 클레임을 검증해야 합니다.
주의사항
JWT는 기본적으로 서명되지만 암호화되지 않습니다 — 토큰을 가진 누구나 모든 클레임을 읽을 수 있습니다. 민감 정보(개인정보, 결제 정보)는 JWE(암호화 변형)을 쓰지 않는 한 JWT 페이로드에 넣지 마세요.
추천 도구
유용할 수 있는 엄선된 도구