본문으로 건너뛰기
SPCXTools

JWT 디코더

JSON Web Token을 디코딩하고 만료 여부와 HMAC 서명을 검증하세요. 모든 과정은 브라우저에서 안전하게 처리됩니다.

로컬 실행 — 파일이 기기 외부로 전송되지 않습니다

도구 불러오는 중…

JWT 디코더 사용 방법

  1. 1JWT(점으로 구분된 3개의 Base64URL 부분)를 토큰 상자에 붙여넣거나 샘플 불러오기를 클릭하세요.
  2. 2디코딩된 헤더와 페이로드를 포맷팅된 JSON으로 확인하세요.
  3. 3상태 표시줄에서 토큰이 유효한지, 만료되었는지, 아직 유효하지 않은지 확인하세요. 시간 클레임은 읽기 쉬운 날짜로 표시됩니다.
  4. 4HS256, HS384, HS512 토큰의 경우, 시크릿(secret)을 입력하여 로컬에서 서명을 검증하세요.

JSON Web Token 디코딩

JSON Web Token(JWT)은 시스템 간에 신원 및 권한 정보를 전달하는 데 사용되는 간결한 문자열로, 로그인 후 Authorization: Bearer 헤더로 가장 많이 사용됩니다. 무작위 텍스트처럼 보이지만, 실제로는 Base64URL로 인코딩된 세 부분인 헤더, 클레임이 포함된 페이로드, 서명으로 구성됩니다. 이 JWT 디코더는 토큰을 분리하고 처음 두 부분을 읽기 쉬운 JSON 형식으로 디코딩하여 중요한 클레임을 설명해 줍니다. 디코딩 및 검증은 로컬에서 이루어지므로 토큰이 외부로 절대 전송되지 않습니다.

주요 기능

  • 헤더 및 페이로드 디코딩 후 보기 좋게 정렬(pretty-print)되며, 각각 복사 버튼이 제공됩니다.
  • 시간 클레임 설명: iat, nbf, exp, auth_time 값이 에포크(epoch) 초 단위에서 사용자의 시간대에 맞는 날짜로 변환됩니다.
  • 만료 확인: 토큰이 만료되었는지 또는 아직 활성화되지 않았는지 한눈에 확인할 수 있습니다.
  • HMAC 서명 검증: 브라우저의 Web Crypto API를 사용하여 HS256, HS384, HS512 서명을 검증합니다.
  • 오프라인 동작: 페이지가 로드된 후에는 오프라인으로 작동하며, 어떠한 데이터도 외부로 전송하지 않습니다.

활용 사례

인증 디버깅. 요청이 401 Unauthorized 오류로 실패할 때, 토큰을 디코딩하여 만료 여부, 올바른 대상(aud)에게 발급되었는지, 예상되는 역할(role)과 범위(scope)가 포함되어 있는지 확인합니다.

API 구축 및 테스트. 배포하기 전에 서버가 의도한 클레임과 정확한 만료 시간을 토큰에 제대로 포함하는지 검증합니다.

OAuth 및 OpenID Connect 작동 방식 학습. 자격 증명 제공자(Identity Provider)가 발급하는 ID 토큰과 액세스 토큰은 대부분 JWT입니다. 테스트 토큰을 디코딩하면 제공자가 사용자에 대해 어떤 정보를 공유하는지 확인할 수 있습니다.

JWT 구조

header.payload.signature

  • 헤더 — 토큰의 타입과 서명 알고리즘 (예: {"alg":"HS256","typ":"JWT"}).
  • 페이로드 — 클레임(Claims) 정보입니다. 등록된 클레임으로는 iss(발급자), sub(주제, 주로 사용자 ID), aud(대상자), exp, nbf, iat, jti(토큰 ID)가 있습니다. 애플리케이션은 name이나 role 같은 커스텀 클레임을 추가할 수 있습니다.
  • 서명 — 시크릿 키(HMAC)나 개인 키(RSA, ECDSA, EdDSA)를 사용해 header.payload를 서명하여 생성합니다. 누군가 헤더나 페이로드의 글자 하나라도 변경하면 서명이 더 이상 일치하지 않게 됩니다.

페이로드는 암호화되지 않고 인코딩만 되므로, 비밀번호와 같은 민감한 정보를 JWT에 포함해서는 절대 안 됩니다. 다른 Base64 데이터를 디코딩하려면 Base64 도구를 사용하고, 타임스탬프를 확인하려면 Unix 타임스탬프 변환기를 사용해 보세요.

자주 묻는 질문 (FAQ)

여기에 실제 토큰을 붙여넣어도 안전한가요?
토큰은 브라우저에서만 디코딩 및 검증되며 서버로 절대 전송되지 않습니다. 하지만 JWT는 자격 증명이므로 비밀번호처럼 안전하게 다뤄야 합니다. 운영(production) 토큰 공유는 피하고 가급적 테스트 토큰을 사용하는 것이 좋습니다.
JWT를 디코딩하면 토큰이 진짜인지 증명되나요?
아닙니다. 헤더와 페이로드는 암호화되지 않고 Base64URL로 인코딩만 되므로 누구나 디코딩할 수 있습니다. 토큰은 올바른 키로 서명을 검증해야만 신뢰할 수 있습니다. HMAC 토큰은 여기에 시크릿 키를 입력해 검증할 수 있으며, RSA 및 ECDSA 토큰은 애플리케이션 내에서 발급자의 공개 키로 검증해야 합니다.
exp, iat, nbf는 무슨 뜻인가요?
exp(만료 시간)는 토큰이 만료되는 시간, iat(발급 시간)는 토큰이 생성된 시간, nbf(활성 시간)는 토큰을 사용할 수 있는 가장 빠른 시간을 의미합니다. 세 가지 모두 초 단위의 Unix 타임스탬프이며, 디코더가 이를 사용자의 시간대에 맞는 날짜와 시간으로 변환해 줍니다.
왜 토큰이 유효하지 않다고 나오나요?
JWT는 점(.)으로 구분된 3개의 부분으로 구성되어야 하며, 처음 두 부분은 Base64URL로 인코딩된 JSON이어야 합니다. Bearer 접두사, 따옴표, 줄바꿈 없이 토큰 전체를 정확히 복사했는지 확인해 보세요.
암호화된 토큰(JWE)도 디코딩할 수 있나요?
아닙니다. 암호화된 JWT는 5개의 부분으로 구성되며 복호화 키가 있어야만 페이로드를 읽을 수 있습니다. 이 도구는 대부분의 API에서 사용하는 서명된 토큰(JWS)만 처리합니다.