🌐 KO

🔓 JWT 디코더

JWT(JSON Web Token)를 붙여넣으면 헤더(header)와 페이로드(payload)를 즉시 base64url 디코드하여 정렬된 JSON으로 보여줍니다. exp/iat/nbf 클레임은 사람이 읽기 쉬운 시간으로 함께 표시하고, 만료 여부를 배지로 알려줍니다.

⚠️ 이 도구는 디코드만 수행하며 서명(signature)을 검증하지 않습니다. 보안상 시크릿 키를 입력받는 필드 자체를 두지 않았습니다 — 서명 검증이 필요하면 서버 측 라이브러리를 사용하세요.

가이드

자세히 알아보기

01

1. JWT 구조 이해하기

JWT는 점(.)으로 구분된 3개 부분으로 구성됩니다: header.payload.signature. 헤더에는 서명 알고리즘(alg)과 토큰 타입(typ)이, 페이로드에는 실제 클레임(claims, 사용자 ID·권한·발급시간 등)이 base64url로 인코딩되어 담깁니다. 서명은 헤더+페이로드를 비밀키(또는 개인키)로 서명한 값으로, 토큰이 변조되지 않았음을 검증하는 데 쓰이지만 이 도구는 그 검증을 수행하지 않습니다.

02

2. exp, iat, nbf 클레임

exp(expiration)는 토큰 만료 시각, iat(issued at)는 발급 시각, nbf(not before)는 이 시각 이전에는 토큰이 유효하지 않음을 나타냅니다. 세 값 모두 유닉스 타임스탬프(초 단위)로 저장되어 있어 사람이 바로 읽기 어렵습니다. 이 도구는 각 값을 로컬 시간과 ISO 8601 형식으로 함께 보여주고, exp가 현재 시각보다 과거이면 "만료됨" 배지를 표시합니다.

03

3. 서명 검증이 필요한 경우

JWT의 서명을 검증하려면 토큰 발급 시 사용한 비밀키(HMAC 계열, HS256 등) 또는 공개키(RSA/ECDSA 계열, RS256/ES256 등)가 필요합니다. 이는 서버 환경에서 처리해야 하는 민감한 작업이므로, 이 브라우저 도구는 디코드(내용 확인)만 제공하고 시크릿을 입력받지 않습니다. 실제 검증은 백엔드 언어의 JWT 라이브러리(jsonwebtoken, PyJWT, firebase-admin 등)를 사용하세요.

자주 묻는 질문

이 도구로 JWT를 위조할 수 있나요?
아니요. 이 도구는 디코드(base64url 해독)만 수행하며 서명을 생성하거나 검증하지 않습니다. 유효한 서명을 만들려면 발급자만 아는 비밀키/개인키가 필요하며, 이 도구는 그런 키를 입력받지 않습니다.
왜 시크릿 키 입력 필드가 없나요?
보안을 위해서입니다. 시크릿을 브라우저에 붙여넣는 습관은 실수로 노출될 위험이 있어, 이 도구는 애초에 그런 입력을 받지 않도록 설계했습니다.
만료된 토큰인지 어떻게 알 수 있나요?
페이로드에 exp 클레임이 있으면 자동으로 현재 시각과 비교하여 "만료됨" 또는 "유효(만료 전)" 배지를 표시합니다.
입력한 토큰이 서버로 전송되나요?
아니요. 디코드는 브라우저 자바스크립트 안에서만 수행되며 서버로 전송되지 않습니다.