JWT
디코더
JWT 토큰을 붙여넣으면 Header, Payload, Signature를 즉시 분석합니다
JWT란?
JWT(JSON Web Token, RFC 7519)는 당사자 간 정보를 안전하게 전달하기 위한 토큰 형식으로, 로그인 인증·API 접근 제어에 널리 쓰입니다. Header.Payload.Signature 세 부분이 점(.)으로 구분되며, 각 부분은 Base64URL로 인코딩됩니다. Header는 서명 알고리즘(alg)과 토큰 타입(typ)을, Payload는 사용자 ID·권한·만료시간(exp) 등 클레임(claim)을, Signature는 Header와 Payload를 비밀키(또는 개인키)로 서명한 값을 담습니다. 서명 덕분에 토큰 위변조 여부는 검증할 수 있지만, Payload 자체는 암호화가 아니라 인코딩만 되어 있어 누구나 디코딩해 내용을 읽을 수 있습니다 — 그래서 비밀번호나 카드번호 같은 민감정보를 Payload에 담으면 안 됩니다. 이 도구는 붙여넣은 JWT를 브라우저에서만 파싱해 Header·Payload·만료시간을 사람이 읽기 쉬운 형태로 보여주며, 어떤 값도 서버로 전송하지 않습니다.
자주 묻는 질문
JWT란 무엇인가요?
JWT(JSON Web Token)는 당사자 간 정보를 안전하게 전달하기 위한 토큰 형식입니다. Header.Payload.Signature 세 부분이 점(.)으로 구분되며 각 부분은 Base64URL로 인코딩됩니다.
JWT는 암호화되어 있나요?
아닙니다. JWT는 서명으로 무결성을 보장하지만 Payload는 Base64 인코딩만 되어 있어 누구나 읽을 수 있습니다. 민감한 정보(비밀번호, 개인정보 등)를 Payload에 포함하지 마세요.
JWT 만료시간(exp)을 어떻게 확인하나요?
토큰을 붙여넣으면 Payload의 exp 클레임을 자동으로 파싱해 만료 여부와 시간을 사람이 읽기 쉬운 형태로 표시합니다.
JWT 서명(Signature)을 이 도구로 검증할 수 있나요?
아닙니다. 서명 검증은 서버의 비밀키(secret)나 공개키가 필요합니다. 이 도구는 토큰 디코딩(내용 확인)만 지원하며 서명 유효성은 확인하지 않습니다.
JWT의 alg 헤더가 none이면 어떤 문제가 있나요?
alg:none은 서명이 없음을 의미합니다. 이를 허용하는 서버는 토큰 위변조 공격에 취약합니다. 반드시 서버에서 alg:none을 거부하도록 설정하세요.
iat, exp, nbf 클레임의 차이는 무엇인가요?
iat(Issued At)는 발급 시각, exp(Expiration)는 만료 시각, nbf(Not Before)는 유효 시작 시각을 Unix 타임스탬프로 나타냅니다. 모두 RFC 7519 표준 클레임입니다.
RS256과 HS256의 차이는 무엇인가요?
HS256은 대칭키 방식으로 동일한 비밀키로 서명과 검증을 합니다. RS256은 비대칭키 방식으로 개인키로 서명하고 공개키로 검증합니다. 외부 서비스와 검증을 공유할 때 RS256이 더 안전합니다.
JWT를 쿠키에 저장할까요, localStorage에 저장할까요?
HttpOnly + Secure 쿠키 저장이 XSS 공격으로부터 안전합니다. localStorage는 JavaScript로 접근 가능해 XSS에 취약합니다. 쿠키는 CSRF 대책도 함께 적용해야 합니다.
JWT 토큰이 탈취되면 어떻게 해야 하나요?
JWT는 기본적으로 서버에서 무효화하기 어렵습니다. 대응 방안으로 토큰 블랙리스트, 짧은 만료 시간 설정, Refresh Token 회전(rotation) 방식을 사용합니다.
JWT Payload에 어떤 정보를 담아야 하나요?
사용자 ID, 역할(role), 권한(scope), 발급자(iss) 등 인증에 필요한 최소한의 정보만 포함하세요. 비밀번호, 카드번호 등 민감한 정보는 절대 포함하지 마세요.
Refresh Token과 Access Token의 차이는 무엇인가요?
Access Token은 짧은 만료 시간(수 분~1시간)을 가지며 API 요청 인증에 사용됩니다. Refresh Token은 긴 유효기간을 가지며 새로운 Access Token을 발급받는 데만 사용됩니다.
입력한 JWT가 서버로 전송되나요?
아닙니다. 모든 디코딩은 브라우저의 JavaScript에서 처리됩니다. 실제 서비스의 JWT 토큰도 안전하게 디코딩해 내용을 확인할 수 있습니다.