liminfo

JWT Decoder

JWT 토큰 디코딩 및 검증

JWT Decoder 소개

JWT Decoder는 JSON Web Token(JWT)을 분석하고 디코딩하는 무료 온라인 도구입니다. JWT 문자열을 붙여넣기만 하면 헤더, 페이로드, 서명 세 구성 요소를 즉시 분리하여 보여줍니다. Base64URL로 인코딩된 헤더에서 서명 알고리즘(HS256, RS256, ES256 등)과 토큰 타입을 확인하고, 페이로드의 모든 등록 클레임과 커스텀 클레임을 가독성 높은 JSON 형식으로 표시합니다.

REST API 인증 디버깅, OAuth 2.0 및 OpenID Connect 문제 해결, 보안 감사 등 다양한 상황에서 활용할 수 있습니다. 마이크로서비스 아키텍처나 SSO(Single Sign-On) 시스템을 다루는 개발자라면 토큰의 만료 시간(exp), 발급 시간(iat), 발급자(iss), 대상(aud) 등의 클레임을 빠르게 확인해야 할 때 유용합니다.

모든 디코딩 과정은 브라우저 내에서 JavaScript로 처리되며, 토큰이 외부 서버로 전송되는 일은 없습니다. 민감한 사용자 정보나 권한 데이터가 포함된 토큰도 안심하고 분석할 수 있습니다.

주요 기능

  • JWT 헤더와 페이로드의 Base64URL 디코딩 및 유니코드 완벽 지원
  • 헤더, 페이로드, 서명 세 파트 자동 분리 및 구조화된 JSON 표시
  • 토큰 만료 여부 자동 감지 및 exp, iat, nbf 타임스탬프의 날짜/시간 변환
  • 서명 알고리즘 자동 식별 (HS256, RS256, ES256, PS256 등)
  • 표준 클레임(iss, sub, aud, exp, nbf, iat, jti)과 커스텀 클레임 전체 표시
  • 디코딩된 헤더, 페이로드, 서명 값 원클릭 복사 기능
  • 잘못된 형식의 JWT 입력 시 상세한 오류 메시지 표시
  • 만료된 토큰 실시간 경고 및 한국어 날짜/시간 형식 지원

자주 묻는 질문

JWT(JSON Web Token)란 무엇인가요?

JWT는 두 당사자 간에 정보를 안전하게 전달하기 위한 개방형 표준(RFC 7519)입니다. 점(.)으로 구분된 세 개의 Base64URL 인코딩 파트로 구성됩니다. 헤더는 알고리즘과 토큰 타입을, 페이로드는 사용자나 세션에 대한 클레임(데이터)을, 서명은 토큰의 무결성을 검증하는 데 사용됩니다. REST API 인증, OAuth 2.0, SSO 시스템에서 널리 사용됩니다.

JWT 인증은 어떻게 동작하나요?

사용자가 로그인하면 서버가 사용자 정보와 권한 클레임이 담긴 서명된 JWT를 생성하여 클라이언트에 반환합니다. 클라이언트는 이 토큰을 저장(localStorage 또는 HTTP-only 쿠키)한 뒤, 이후 API 요청 시 Authorization 헤더에 Bearer 토큰으로 포함시킵니다. 서버는 서명을 검증하고 클레임을 읽어 사용자를 식별하며, 데이터베이스 조회 없이도 인증이 가능해 확장성이 뛰어납니다.

JWS와 JWE의 차이점은 무엇인가요?

JWS(JSON Web Signature)는 서명만 되어 있어 누구나 페이로드를 디코딩하여 읽을 수 있지만, 서명 없이는 변조할 수 없습니다. JWE(JSON Web Encryption)는 페이로드 자체가 암호화되어 복호화 키 없이는 내용을 볼 수 없습니다. 일반적으로 사용되는 JWT는 대부분 JWS 형식이며, 이 디코더는 JWS 토큰을 지원합니다.

JWT 토큰이 만료되었는지 어떻게 확인하나요?

JWT 페이로드의 "exp" 클레임에 Unix 타임스탬프(1970년 1월 1일부터의 초 단위) 형태로 만료 시간이 기록되어 있습니다. 이 디코더는 exp 클레임을 자동으로 감지하여 사람이 읽을 수 있는 날짜와 시간으로 변환하고, 토큰이 만료된 경우 경고 메시지를 표시합니다. "iat"(발급 시간)과 "nbf"(유효 시작 시간) 타임스탬프도 함께 확인할 수 있습니다.

브라우저에서 JWT를 디코딩해도 안전한가요?

네, 안전합니다. JWT 디코딩은 토큰에 이미 포함된 정보를 보여줄 뿐이며, 서명 검증이나 접근 권한 부여와는 무관합니다. JWS 페이로드는 암호화가 아닌 Base64URL 인코딩일 뿐이므로, 토큰을 가진 누구나 내용을 읽을 수 있습니다. 이 도구는 모든 처리를 브라우저 내에서 수행하며 서버 통신이 전혀 없으므로, 토큰이 외부에 노출될 위험이 없습니다.

JWT의 표준 클레임에는 어떤 것들이 있나요?

RFC 7519에서 정의한 7가지 등록 클레임이 있습니다. "iss"(발급자), "sub"(주체 — 토큰이 대표하는 사용자), "aud"(대상 — 토큰의 수신자), "exp"(만료 시간), "nbf"(유효 시작 시간), "iat"(발급 시간), "jti"(토큰 고유 ID)입니다. 실제 서비스에서는 역할(role), 권한(permission), 이메일 등의 커스텀 클레임을 추가하여 사용합니다.

JWT에는 어떤 서명 알고리즘이 사용되나요?

JWT 헤더의 "alg" 필드에 서명 알고리즘이 지정됩니다. HMAC 계열(HS256, HS384, HS512)은 하나의 비밀 키로 서명과 검증을 모두 수행합니다. RSA 계열(RS256, RS384, RS512)은 개인 키로 서명하고 공개 키로 검증하여 분산 시스템에 적합합니다. ECDSA 계열(ES256, ES384, ES512)은 RSA와 동등한 보안을 더 짧은 키로 제공합니다. "none" 알고리즘은 서명이 없는 토큰으로, 보안 취약점이 있어 운영 환경에서는 절대 허용하면 안 됩니다.

JWT에 점(.)이 세 개 있는 이유는 무엇인가요?

JWT의 세 개의 점은 세 가지 구성 요소를 구분합니다. header.payload.signature 형식으로, 헤더는 토큰 타입과 서명 알고리즘을, 페이로드는 클레임 데이터를, 서명은 헤더와 페이로드를 비밀 키 또는 개인 키로 서명한 값을 담고 있습니다. 이 구조 덕분에 누구나 헤더와 페이로드를 디코딩하여 읽을 수 있지만, 올바른 키를 가진 쪽만이 서명을 검증하거나 새로운 유효한 토큰을 생성할 수 있습니다.