JWT

JWT 인코딩 디코딩 token

JWT의 header와 payload를 디코딩해 claim을 확인하거나, 브라우저에서 HMAC 서명 토큰을 생성합니다.

mode
algorithm
INPUTjwt token
0 lines 0 chars
1
HEADERdecoded header
0 lines 0 chars
1
PAYLOADdecoded payload
0 lines 0 chars
1
CLAIMStoken info
도구 설명

이 도구가 하는 일

JWT(JSON Web Token)는 인증과 권한 정보를 담아 주고받는 토큰 형식입니다. 점(.)으로 구분된 세 부분, 즉 header, payload, signature로 구성되며 앞의 두 부분은 JSON을 URL-safe Base64로 인코딩한 것입니다. 암호화가 아니라 인코딩이므로 서명 검증 없이도 내용은 누구나 읽을 수 있습니다.

header에는 서명 알고리즘(alg)과 토큰 타입(typ)이 들어갑니다. payload에는 claim이라 부르는 정보가 담기는데, 표준 claim으로 만료 시각 exp, 발급 시각 iat, 유효 시작 시각 nbf, 대상 sub, 발급자 iss, 수신자 aud 등이 있습니다. 시각 값은 대부분 Unix 초 단위 정수라 그대로 보면 의미를 알기 어렵기 때문에 이 도구는 사람이 읽을 수 있는 날짜로 함께 표시합니다.

signature는 header와 payload를 비밀 키로 서명한 값으로, 토큰이 변조되지 않았음을 증명합니다. 이 도구의 Decode 모드는 구조 해석과 claim 확인만 수행하며 서명 검증은 하지 않습니다. Encode 모드는 브라우저에서 HMAC 계열 서명을 만들어 테스트용 토큰을 생성합니다.

언제 사용하나요

로그인 후 발급된 토큰이 언제 만료되는지 확인할 때, 권한 오류가 났을 때 payload의 role이나 scope 값을 검토할 때, 프런트엔드와 백엔드가 서로 다른 토큰을 보고 있는지 비교할 때, API 테스트용 토큰을 임시로 만들 때 사용합니다. exp가 이미 지났는지 확인하는 것만으로 해결되는 인증 문제가 상당히 많습니다.

입력과 출력 예시

입력 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0IiwiZXhwIjoxNzY3MjI1NjAwfQ.signature
출력 header: alg HS256, typ JWT / payload: sub 1234, exp 1767225600 (2026-01-01 00:00:00 UTC)

exp 값이 사람이 읽을 수 있는 날짜로 함께 표시됩니다.

입력 header {"alg":"HS256"} + payload {"sub":"test"} + 비밀 키
출력 세 부분이 점으로 연결된 서명 토큰

Encode 방향. 테스트용 토큰을 만들 때 사용합니다.

주의사항

실제 운영 환경의 토큰을 아무 곳에나 붙여 넣지 마십시오. 이 도구는 브라우저에서만 처리하지만, 유효한 토큰은 그 자체가 로그인 상태를 의미하므로 취급에 주의해야 합니다. 또한 디코딩이 된다고 해서 토큰이 유효한 것은 아닙니다. 서명 검증은 반드시 서버에서 비밀 키로 수행해야 하며, alg를 none으로 지정한 토큰을 받아들이는 서버는 심각한 보안 취약점을 가진 것입니다. 브라우저에서 만든 서명은 테스트 용도로만 사용하십시오.

자주 묻는 질문

JWT는 암호화된 것인가요?

아닙니다. header와 payload는 Base64 인코딩일 뿐이라 누구나 내용을 볼 수 있습니다. 비밀번호나 주민등록번호 같은 민감 정보를 payload에 넣으면 안 됩니다. 서명은 내용을 숨기는 것이 아니라 변조를 막는 역할입니다.

이 도구가 서명도 검증해 주나요?

하지 않습니다. Decode 모드는 구조와 claim만 해석합니다. 서명 검증에는 비밀 키가 필요하며, 이는 서버에서 수행해야 합니다.

exp가 지났는데도 요청이 통과합니다.

서버가 만료 검증을 하지 않고 있을 가능성이 있습니다. 또는 서버와 클라이언트의 시각 차이(clock skew)를 허용 범위로 두었을 수도 있습니다. 서버 측 검증 로직을 확인하십시오.

Copied