Tarayıcınız güncel değil

Bu siteyi görüntülemek için tarayıcınızın veya cihazınızın işletim sisteminin güncellenmesi gerekiyor.

Your browser is out of date. Please update iOS or your browser to view this site.

본문으로 건너뛰기
Gizke.com
블로그

JWT 디코더

기기에서 실행되며 아무것도 전송되지 않습니다.

브라우저 안에서만 JSON Web Token을 디코딩하고 검사하세요 - 헤더, 페이로드, 만료 시간, 선택적 서명 검증까지, 어디에도 업로드되지 않습니다.

JSON Web Token(JWT)은 두 당사자 사이에 클레임을 표현하는 간결하고 URL에 안전한 방식으로, "Authorization: Bearer ..." 헤더부터 세션 쿠키, 싱글 사인온(SSO)까지 어디에서나 사용됩니다. JWT는 점으로 연결된 세 개의 base64url 인코딩 부분(헤더, 페이로드, 서명)일 뿐이므로 누구나 서명 키 없이도 헤더와 페이로드를 디코딩하여 읽을 수 있습니다 - 서명을 검증할 때만 비밀 키나 개인 키가 필요합니다. 이 도구는 두 부분을 브라우저에서 로컬로 디코딩하고, 표준 클레임을 설명하며, 만료되었거나 아직 유효하지 않은 토큰을 표시하고, "none" 알고리즘이라는 보안 함정에 대해 경고합니다 - 토큰은 어디로도 전송되지 않습니다.

자주 묻는 질문

제 JWT가 서버로 전송되나요?
아니요. 디코딩은 브라우저의 atob 및 TextDecoder API만을 사용해 전적으로 브라우저 안에서 이루어집니다 - 토큰과 서명 검증을 위해 붙여넣은 비밀 키나 공개 키는 절대 기기를 벗어나지 않습니다.
이 도구가 서명을 검증할 수 있나요?
네, 최선 노력 기반의 보너스 기능으로 가능합니다. HMAC 비밀 키(HS256/384/512용)를 알고 있거나 PEM 형식의 공개 키(RS256/384/512 또는 ES256/384/512용)를 붙여넣으면, 도구가 브라우저의 Web Crypto API를 사용해 로컬에서 서명을 확인합니다. 키가 없으면 헤더와 페이로드만 디코딩되어 표시됩니다 - 디코딩 자체에는 서명 키가 전혀 필요하지 않습니다.
왜 알고리즘이 "none"으로 표시되나요?
"alg": "none"은 토큰이 전혀 서명되지 않았음을 의미합니다 - 누구든지 원하는 클레임을 써넣을 수 있었을 것입니다. 일부 라이브러리는 과거 이런 서명되지 않은 토큰을 유효한 것으로 잘못 받아들였고, 이는 잘 알려진 인증 우회 방법이 되었습니다. 이 도구는 놓치지 않도록 항상 눈에 띄게 표시합니다.
exp, iat, nbf는 무엇을 의미하나요?
RFC 7519의 표준 타임스탬프 클레임입니다: iat은 토큰이 발급된 시각, nbf는 토큰이 유효해지는 가장 이른 시점, exp는 더 이상 유효하지 않게 되는 시점을 나타냅니다. 세 값 모두 NumericDate(유닉스 epoch 이후 경과 초)로 저장되며, 이 도구는 이를 읽기 쉬운 날짜와 "2시간 후 만료"와 같은 상대 시간으로 변환합니다.
비밀 키 없이도 페이로드를 읽을 수 있는 이유는 무엇인가요?
JWT의 헤더와 페이로드는 암호화된 것이 아니라 base64url로 인코딩되었을 뿐이기 때문입니다 - 인코딩은 비밀 유지가 아닙니다. 토큰을 가진 사람은 누구나 이미 클레임을 읽을 수 있습니다. 서명은 키가 없는 사람이 클레임을 변조하지 않았음을 증명할 뿐입니다. 공격자가 직접 읽지 않기를 바라는 내용은 절대 JWT 페이로드에 넣지 마세요.
제 토큰에 3개의 부분이 있는데도 디코딩되지 않습니다 - 왜 그런가요?
세 세그먼트(헤더, 페이로드, 서명) 각각은 유효한 base64url 텍스트여야 하며, 헤더와 페이로드는 유효한 JSON으로 디코딩되어야 합니다. 이 도구는 헤더와 페이로드를 독립적으로 디코딩하고, 조용히 실패하는 대신 어느 쪽이 왜 잘못되었는지(잘못된 base64, 잘못된 UTF-8, 또는 유효하지 않은 JSON) 정확히 알려줍니다.
개발자용: URL에 `token` 매개변수를 추가해 이 페이지를 열면 - 예: gizke.com/jwt?token=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIn0.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c - 해당 토큰이 자동으로 미리 채워집니다. 대부분의 방문자에게는 필요하지 않으며, 바로 사용할 수 있는 예시로 직접 연결하기 위한 기능입니다.

이 도구 공유하기

블로그소개문의이용약관개인정보처리방침