무료 변환기

JWT 토큰 디코더

브라우저에서 JWT(JSON 웹 토큰) 헤더와 페이로드를 즉시 디코딩합니다. 무료, 개인 및 클라이언트 측 - 서버로 데이터가 전송되지 않습니다.

이 도구에 대하여

JWT(JSON 웹 토큰)는 RFC 7519에 정의된 두 당사자 간의 청구 전송을 위한 압축된 URL 안전 형식입니다. JWT는 점으로 구분된 3개의 base64url 인코딩 세그먼트(헤더(알고리즘 및 토큰 유형), 페이로드(청구) 및 서명(암호화된 진위 증명))입니다. 헤더와 페이로드는 URL 안전을 위해 base64url로 인코딩된 JSON입니다. 서명은 인코딩된 헤더와 페이로드에 대해 여러 알고리즘(HS256, RS256, ES256 등) 중 하나를 사용합니다.

JWT를 세그먼트로 분할하고 각각을 base64로 디코딩하는 디코딩에는 비밀이 필요하지 않습니다. 토큰 텍스트가 있는 사람은 누구나 헤더와 페이로드를 읽을 수 있습니다. 그러나 서명은 비밀(HMAC) 또는 공개 키(비대칭)로만 확인할 수 있습니다. 디코딩은 검사를 위한 것입니다. 검증은 진정성을 입증하는 것입니다.

이 디코더는 토큰을 분할하고, 각 세그먼트를 base64로 디코딩하고, 헤더와 페이로드를 JSON으로 구문 분석하고, 결과를 표시합니다. 디코더에 없는 비밀 키나 공개 키가 필요하기 때문에 서명 확인을 시도하지 않습니다. 디코딩된 출력은 읽기 전용 검사이므로 토큰 디버깅에 유용하지만 애플리케이션 코드의 적절한 확인을 대체할 수는 없습니다.

JWT를 디코딩하는 이유

인증 문제 디버깅에는 거의 항상 토큰 검사가 포함됩니다. 코드에서 유효해 보이는 토큰에는 잘못된 청구, 예상치 못한 알고리즘, 만료된 exp 타임스탬프 또는 대상 불일치가 있을 수 있습니다. 토큰을 디코딩하면 발급자가 생산한 내용이 정확히 드러납니다.

통합 작업 중 토큰을 검사하는 것도 도움이 됩니다. 타사 API 또는 ID 공급자에 연결할 때 오래된 문서에 의존하기보다는 샘플 토큰을 디코딩하면 실제 클레임 이름, 형식 및 구조를 가장 잘 이해할 수 있습니다.

사용 방법

토큰을 붙여넣고 구문 분석된 내용을 가져옵니다.

  1. JWT 붙여넣기: 전체 토큰(header.payload.signature)을 입력 영역에 놓습니다. 디코더는 선택적 Bearer 접두사가 있거나 없는 토큰을 허용합니다.
  2. 헤더 검사: 헤더에는 서명 알고리즘(alg)과 토큰 유형(typ)이 표시됩니다. 일반적인 알고리즘은 HS256, RS256 및 ES256입니다. alg: none은 서명되지 않은 토큰을 나타내며 프로덕션에서는 거의 안전하지 않습니다.
  3. 페이로드 검사: 페이로드에는 iss(발급자), sub(주제), aud(대상), exp(만료), iat(발행 위치) 및 모든 애플리케이션별 클레임과 같은 클레임이 포함됩니다. 표준 타임스탬프는 Unix epoch 초입니다.
  4. 별도로 확인: 디코더는 서명을 확인하지 않습니다. 진위 여부를 확인하려면 애플리케이션 코드에 적절한 비밀 또는 공개 키를 사용하여 JWT 라이브러리를 통해 토큰을 실행하세요.

일반적인 사용 사례

기술적인 세부사항

JWT 형식은 점으로 연결된 세 개의 세그먼트입니다. 각 세그먼트는 base64url로 인코딩됩니다. 이는 + 및 / 대신 - 및 _를 사용하고 때로는 패딩이 생략되는 base64의 URL 안전 변형입니다. 디코딩하려면 URL 안전 대체 실행 취소, 세그먼트 패딩 및 base64 디코딩이 필요합니다.

헤더와 페이로드는 디코딩 후 JSON입니다. 서명 세그먼트는 바이너리(원시 서명 바이트)이며 사람이 읽을 수 없습니다. 유용하려면 확인 키가 필요합니다.

RFC 7519에 정의된 일반 클레임: iss(발급자), sub(주체 식별자), aud(대상), exp(Unix epoch 초로 만료), nbf(타임스탬프 이전이 아님), iat(타임스탬프에서 발행됨), jti(고유 토큰 ID). 애플리케이션별 클레임은 어떤 이름으로도 나타날 수 있습니다.

모범 사례

자주 묻는 질문

여기에 JWT를 붙여넣어도 안전합니까?
예. 디코딩은 전적으로 브라우저에서 이루어지며 토큰은 서버로 전송되지 않습니다. 그러나 JWT는 자격 증명이므로 계정에 대한 액세스 권한을 부여할 수 있으므로 공개적으로 공유하지 마십시오(스크린샷, 스택 오버플로 게시물 등).
이 도구는 JWT 서명을 확인합니까?
이 도구는 토큰 내용을 디코딩하고 표시합니다. 서명 확인에는 서버에 남아 있어야 하는 비밀 키(HMAC) 또는 공개 키(RSA/ECDSA)가 필요합니다. 도구는 사용된 알고리즘을 표시하지만 키 없이는 확인할 수 없습니다.
표준 JWT 주장은 무엇을 의미하나요?
iss = 발급자, sub = 주체(사용자 ID), exp = 만료 시간(Unix 타임스탬프), iat = 발급 시간, nbf = 이전 아님, aud = 대상, jti = JWT ID. 사용자 정의 클레임에는 모든 애플리케이션별 데이터가 포함될 수 있습니다.
누구나 JWT를 디코딩할 수 있는 이유는 무엇입니까?
JWT는 암호화되지 않고 인코딩됩니다. 페이로드는 Base64URL로 인코딩되어(암호화되지 않음) 누구나 읽을 수 있습니다. 서명은 읽는 것이 아니라 변조를 방지합니다. JWT 페이로드에 민감한 데이터(비밀번호, SSN)를 저장하지 마세요.
일부 토큰에 서명이 누락된 이유는 무엇입니까?
alg가 있는 토큰: none에는 서명이 없습니다. 사양에 따라 유효한 JWT이지만 신뢰성을 보장하지 않으며 프로덕션에서 허용되어서는 안 됩니다.
JWT는 암호화되어 있나요?
표준 JWT 페이로드는 서명되었지만 암호화되지는 않았습니다. JWE(JSON Web Encryption, RFC 7516)는 암호화된 토큰을 위한 별도의 형식입니다. 대부분의 JWT는 JWS(서명된 경우에만 해당)입니다.
내 토큰이 서버에 업로드되나요?
아니요. 디코딩은 브라우저에서 발생합니다. 토큰은 장치를 떠나지 않습니다.
JWT는 일반적으로 얼마나 오래 걸리나요?
수백 자에서 수천 자까지 가능합니다. 길이는 청구의 수와 크기, 그리고 서명 길이(알고리즘에 따라 다름)에 따라 달라집니다.