JWT 디코더 및 검증기
내 도구에 고정JSON Web Token을 디코딩하고 만료와 클레임을 확인하며, 비밀 키나 공개 키로 서명을 검증하세요.
브라우저에서만 실행됩니다. 입력한 내용은 당사 서버로 전송되지 않습니다.
페이로드
HS256/384/512에는 시크릿, 그 외에는 PEM(SPKI 또는 인증서) 형식의 공개 키 또는 JWK나 JWKS(토큰의 kid로 키를 고릅니다). 키는 공유되거나 저장되지 않습니다.
기록 · 0
처리한 입력은 이 페이지가 열려 있는 동안 여기에 표시됩니다. 페이지를 새로 고치면 지워집니다.
코드 예제
내 프로젝트에 그대로 복사해서 쓰세요. 모든 예제는 해당 언어의 표준 라이브러리만 사용하므로 설치할 것이 없습니다.
const token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c'
const payload = token.split('.')[1]
const json = Buffer.from(payload, 'base64url').toString('utf8')
console.log(JSON.stringify(JSON.parse(json), null, 2))기능 소개
JSON Web Token을 디코딩해 헤더와 페이로드를 읽고, 만료되었는지 확인하고, 시크릿이나 공개 키로 서명을 검증합니다. 토큰은 브라우저에서 디코딩하고, 이 페이지에는 광고가 없으며, 토큰과 키는 공유되거나 저장되지 않습니다.
사용 방법
- 토큰을 붙여넣습니다.
Bearer접두사와 줄 바꿈은 무시합니다. - 페이로드를 정리된 형식 또는 압축 JSON으로 읽습니다. 그 아래에서 알고리즘, 상태, 그리고
exp,nbf,iat시각과 현재 시각과의 차이를 볼 수 있습니다. - 서명을 검증하려면 키를 입력합니다. HS256, HS384, HS512는 시크릿, RS, PS, ES, EdDSA는 공개 키(PEM 또는 JWK)를 사용합니다.
- 헤더와 페이로드를 JSON과 클레임 사이에서 전환할 수 있습니다. 클레임 보기는 각 클레임과 그 의미를 나열하고 시간 클레임을 날짜로 보여 줍니다.
- 인코드 탭에서 헤더와 페이로드를 작성하고 시크릿이나 개인 키(PKCS#8 PEM 또는 JWK)로 서명할 수 있습니다. 이 탭의 내용은 저장되거나 공유되거나 기록에 추가되지 않습니다.
예제
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
이 토큰의 페이로드입니다.
{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
}
서명은 시크릿 your-256-bit-secret으로 검증됩니다.
알아두면 좋은 점
- 디코딩은 검증이 아닙니다. 페이로드는 암호화된 것이 아니라 인코딩만 되어 있어서 누구나 읽을 수 있습니다.
- 서버는 어떤 클레임이든 신뢰하기 전에 반드시 서명을 검증해야 합니다.
- 알고리즘이
none인 토큰은 서명되지 않은 것이므로 누구든 만들 수 있습니다. - 실제로 사용 중인 토큰은 비밀번호처럼 다루세요. 여기에 붙여넣을 때는 만료되었거나 테스트용인 토큰을 권장합니다.
- 붙여넣은 JWKS는 토큰의
kid로 키를 찾고, 단일 JWK는 그대로 사용합니다. 이 페이지는 토큰 발급자로부터 키 세트를 가져오지 않습니다. - 해시보다 짧은 HMAC 시크릿(32, 48, 64바이트)은 추측될 수 있어 경고가 표시됩니다. 시크릿은 UTF-8 텍스트 또는 Base64URL로 읽을 수 있습니다.
JWT란?
JSON Web Token은 점으로 이어진 세 개의 Base64URL 부분입니다. 서명 알고리즘을 알리는 헤더, 토큰의 대상과 만료 시각 같은 클레임을 담은 페이로드, 그리고 서명입니다. 앞의 두 부분은 누구나 읽을 수 있고, 키를 가진 쪽에서 온 토큰임을 증명하는 것은 서명뿐입니다.
자주 묻는 질문
디코딩과 검증은 같은 건가요?
아니요. 디코딩은 암호화되지 않은 내용을 읽을 뿐입니다. 검증은 키로 서명을 확인하는 것이며, 서버는 어떤 클레임이든 신뢰하기 전에 이를 해야 합니다.
exp, nbf, iat는 무슨 뜻인가요?
exp는 토큰이 만료되는 시각, nbf는 그 전에는 유효하지 않은 시각, iat는 발급 시각이며 모두 1970년 이후의 초 단위입니다. 이 도구는 기기의 시계와 비교합니다.
실제 토큰을 붙여 넣어도 안전한가요?
토큰은 브라우저에서 디코딩되고 저희 서버로 전송되지 않으며 이 페이지에는 광고도 없습니다. 그래도 유효한 토큰은 비밀번호처럼 다루고, 만료되었거나 테스트용인 토큰을 쓰는 것이 좋습니다.