Glyph WidgetsGlyph Widgets
소개연락처블로그개인정보약관Ko-fi에서 후원하기

© 2026 Glyph Widgets. 모든 권리 보유.

·

100% 클라이언트 측 처리

블로그로 돌아가기

JWT 인코더/디코더|토큰 디버그

HS256, RS256, ES256, PS256 등을 지원하는 JWT 인코더, 디코더, 보안 감사 도구. 클레임 검사, 서명 검증, 취약점 탐지를 브라우저에서 바로 처리합니다.

Glyph Widgets
2026년 2월 27일
18 min read
jwt encoderjwt decoderjwt generatorjwt onlinejson web token encoder

JWT Encoder/Decoder란?

JWT Encoder/Decoder는 서명된 JSON Web Token을 생성하고, 기존 토큰을 디코딩하여 내용을 확인하며, 토큰의 클레임 및 알고리즘 선택에 대한 자동 보안 감사를 실행합니다. JSON Web Token은 무상태 인증에 가장 널리 사용되는 형식입니다. API 게이트웨이, OAuth 공급자, 또는 마이크로서비스가 서명된 토큰을 생성하면, 다운스트림 서비스는 중앙 세션 저장소를 조회하는 대신 해당 서명을 검증합니다. 토큰이 거부되거나, 클레임에 예상치 못한 값이 있거나, 서명 로직을 확인해야 할 때 사용자 정의 코드를 작성하지 않고 토큰을 검사할 수 있습니다. 이 도구는 4개 패밀리의 13가지 알고리즘으로 인코딩, 실시간 만료 상태 디코딩, 서명 검증, 일반적인 취약점을 확인하는 보안 감사 모드를 지원합니다. 모든 작업은 클라이언트 측에서 실행됩니다. 토큰과 서명 키는 브라우저를 벗어나지 않습니다.

주요 기능

  • HMAC (HS256/384/512)으로 서명된 JWT 생성 — JSON 페이로드와 공유 시크릿을 입력하면 도구가 jose 라이브러리의 SignJWT API를 사용하여 토큰에 서명합니다.
  • RSA (RS256/384/512), ECDSA (ES256/384/512), RSA-PSS (PS256/384/512) 지원 — 비대칭 서명을 위해 PEM 인코딩된 개인 키를 붙여넣습니다. 도구는 importPKCS8을 사용하여 키를 가져오고 그에 맞게 서명합니다.
  • alg: none으로 서명되지 않은 토큰 — 서명되지 않은 토큰 생성이 지원되지만 빨간색 경고 패널로 명확하게 표시됩니다.
  • 표준 클레임 빠른 추가 — 원클릭 버튼으로 iss, sub, aud, exp(+1시간), exp(+1일), iat, nbf, jti(crypto.randomUUID()의 무작위 UUID)를 페이로드 편집기에 삽입합니다.
  • JWT 헤더 및 페이로드 디코딩 — JWT를 붙여넣으면 파싱된 헤더와 페이로드가 나란히 배치된 패널에 포맷된 JSON으로 즉시 표시되며, 헤더 아래에 알고리즘과 타입이 표시됩니다.
  • 만료 상태 확인 — 색상이 지정된 상태 배너가 토큰 만료 여부를 실시간 카운트다운(예: "2시간 34분 남음" 또는 만료 날짜 및 시간)과 함께 표시합니다.
  • 서명 검증 — 시크릿(HMAC) 또는 PEM 공개 키(비대칭)를 제공하면 도구가 jwtVerify를 호출하여 서명이 암호학적으로 유효한지 확인합니다.
  • 색상 코드가 지정된 JWT 출력 — 세 토큰 세그먼트가 시각적 식별을 위해 빨간색(헤더), 보라색(페이로드), 파란색(서명)으로 표시됩니다.
  • 보안 감사 모드 — alg: none, 누락된 exp, 만료된 토큰, 미래의 nbf, 매우 긴 만료, 약한 알고리즘, 누락된 iss, aud, sub 클레임을 포함한 10가지 보안 문제에 대해 토큰을 분석합니다.
  • 배치 모드 — 한 번에 여러 JWT 토큰을 디코딩하고(줄당 하나), 각각의 알고리즘과 페이로드 요약을 출력합니다.
  • 100% 클라이언트 측 처리 — 브라우저에서 완전히 실행되는 jose npm 패키지를 사용합니다. 토큰이나 키는 전송되지 않습니다.

JWT Encoder/Decoder 사용 방법

1단계: 모드 선택

도구 상단에 세 개의 모드 버튼이 나타납니다: 인코드, 디코드, 보안 감사. 모드 선택기 아래의 노란색 보안 공지는 신뢰하지 않는 도구에는 서명 키를 입력하지 말라고 상기시킵니다. 키 자료를 사용하기 전에 읽어야 할 좋은 관행입니다.

2단계: JWT 생성 (인코드 모드)

알고리즘을 선택합니다. 그룹화된 드롭다운에 패밀리별로 정렬된 13가지 지원 알고리즘이 표시됩니다: HMAC 대칭(HS256, HS384, HS512), RSA 비대칭(RS256, RS384, RS512), ECDSA 비대칭(ES256, ES384, ES512), RSA-PSS 비대칭(PS256, PS384, PS512), 서명 없음(none). 기본값은 HS256입니다.

페이로드를 편집합니다. JSON 편집기에 sub, name, iat(페이지 로드 시 현재 Unix 타임스탬프로 설정)가 포함된 샘플 페이로드가 미리 채워집니다. 이것을 직접 편집합니다. 타임스탬프를 수동으로 입력하지 않고 표준 클레임을 삽입하려면 클레임 빠른 추가 버튼을 사용합니다. + exp (+1h)를 클릭하면 현재 Unix 타임스탬프에 3600초를 더한 exp 값이 삽입됩니다.

서명 키를 입력합니다. HMAC 알고리즘(HS256/384/512)의 경우 비밀번호 유형 입력 필드가 공유 시크릿을 허용합니다. 표시/숨기기 토글로 값을 표시할 수 있습니다. 비대칭 알고리즘의 경우 여러 줄 텍스트 영역이 -----BEGIN PRIVATE KEY-----로 시작하는 PEM 형식 개인 키를 허용합니다.

"JWT 인코딩"을 클릭합니다. 서명된 토큰이 색상 코드가 지정된 출력 패널에 나타납니다. "복사" 버튼으로 전체 토큰을 복사합니다. "이 토큰 디코딩" 버튼으로 즉시 검사를 위해 디코드 탭으로 전송됩니다.

3단계: JWT 디코딩 (디코드 모드)

토큰 입력 필드에 JWT를 붙여넣습니다. 디코딩은 즉각적입니다. 버튼 클릭이 필요하지 않습니다. 도구는 .에서 토큰을 분리하고, 사용자 정의 base64UrlDecode 함수를 사용하여 각 세그먼트를 Base64URL 디코딩하며, 헤더와 페이로드를 JSON 파싱합니다.

토큰에 exp 클레임이 있으면 디코딩된 패널 위에 색상 배너가 나타납니다:

  • 체크 표시가 있는 녹색: "토큰 유효 — 2시간 34분 남음"
  • 경고 아이콘이 있는 빨간색: "토큰 만료 — [날짜/시간]에 만료됨"

헤더와 페이로드는 각각 복사 버튼이 있는 나란히 배치된 포맷된 JSON 패널에 표시됩니다. 그 아래에 클레임 세부 정보 패널이 각 페이로드 클레임을 자체 카드에 렌더링합니다. 타임스탬프 클레임(exp, iat, nbf)은 원시 Unix 정수와 사람이 읽을 수 있는 날짜 문자열을 모두 표시합니다.

서명 및 검증 섹션에는 원시 서명 문자열이 표시되고 검증을 위한 키 입력이 제공됩니다. 시크릿 또는 공개 키를 입력하고 "서명 검증"을 클릭합니다. 결과 카드는 유효한 서명의 경우 녹색, 유효하지 않은 경우 빨간색으로 변합니다.

4단계: 보안 감사 실행 (감사 모드)

보안 감사 탭으로 전환하고 토큰을 붙여넣습니다. 토큰이 파싱되면 결과가 즉시 나타납니다. 각 결과 카드에는 심각도 배지(CRITICAL, WARNING, NOTE 또는 INFO), 제목, 평이한 설명, 구체적인 권장 사항이 표시됩니다. 감사는 10가지 조건을 확인합니다:

  1. alg: none 또는 누락 — CRITICAL
  2. 약한 알고리즘 HS1 — WARNING
  3. 대칭 알고리즘 사용 중 — NOTE
  4. 누락된 exp 클레임 — WARNING
  5. 토큰이 이미 만료됨 — CRITICAL
  6. 1년 이상 미래의 만료 — NOTE
  7. nbf 클레임이 미래 날짜 — WARNING
  8. 누락된 iss 클레임 — INFO
  9. 누락된 aud 클레임 — INFO
  10. 누락된 sub 클레임 — INFO

문제가 발견되지 않으면 INFO 카드에 "주요 문제가 발견되지 않았습니다. 계속 서버 측에서 토큰을 검증하고 서명 키를 비밀로 유지하세요."라고 표시됩니다.

실용적인 예시

API용 테스트 토큰 생성

백엔드가 sub, iss, aud, exp 클레임이 있는 HS256 서명 JWT를 기대하는 경우, 인코드 모드에서 HS256을 선택하고 기본 페이로드로 시작한 다음, + iss, + sub, + aud, + exp (+1h)를 순서대로 클릭하여 전체 페이로드를 구성합니다. 테스트 시크릿을 입력하고 인코딩을 클릭합니다. 결과 토큰을 API 테스트 도구 또는 HTTP 헤더에 복사합니다. 테스트가 실패하면 디코드 모드에 토큰을 붙여넣어 클레임이 예상과 일치하는지 확인합니다. 클레임 세부 정보 패널에서 수동으로 Base64 디코딩하지 않고도 각 값을 확인할 수 있습니다.

"Token Expired" API 오류 디버깅

애플리케이션이 401 Unauthorized 응답을 받고 있는 경우, 애플리케이션의 Authorization 헤더에서 토큰을 디코드 모드에 붙여넣습니다. 만료 배너가 즉시 토큰 만료 여부와 시기를 알려줍니다. 3분 전에 만료되었다면, 문제는 리프레시 로직 없는 단기 토큰이거나 클라이언트와 토큰 발급자 간의 시계 편차입니다. 클레임 세부 정보 패널의 iat와 exp 클레임이 사람이 읽을 수 있는 날짜로 문제 창을 보여줍니다.

보안 검토 전 토큰 감사

코드 검토 또는 침투 테스트 전에, 쉽게 개선할 수 있는 부분을 식별하기 위해 프로덕션 JWT 샘플을 보안 감사 모드에 붙여넣습니다. alg: none 또는 누락된 exp에 대한 CRITICAL 결과가 있는 토큰은 즉각적인 주의가 필요합니다. 멀티 서비스 아키텍처에서의 대칭 알고리즘에 관한 NOTE는 검토 중에 논의할 가치가 있습니다. 감사 출력은 보안 결과 문서에 직접 복사하여 붙여넣을 수 있습니다.

팁 및 모범 사례

공개 API에는 비대칭 알고리즘(RS256, ES256)을 사용하세요. HMAC(HS256) 알고리즘은 공유 시크릿을 사용합니다. 토큰을 검증할 수 있는 서비스는 토큰을 생성할 수도 있습니다. RS256 또는 ES256을 사용하면 개인 키 소유자만 새 토큰에 서명할 수 있고, 모든 서비스는 배포된 공개 키를 사용하여 검증할 수 있습니다. 보안 감사 모드는 이러한 이유로 HS 알고리즘에 NOTE 플래그를 표시합니다.

항상 exp 클레임을 설정하세요. 만료 없는 토큰은 명시적으로 취소되지 않는 한 무기한 유효합니다. 클레임 빠른 추가 섹션에 1시간 및 1일 만료에 대한 원클릭 버튼이 있습니다. 액세스 토큰은 몇 분에서 몇 시간 내에 만료되어야 합니다. 더 긴 세션에는 리프레시 토큰을 사용합니다.

일회용 토큰에는 jti를 사용하세요. + jti (UUID) 빠른 추가 버튼은 crypto.randomUUID()가 생성한 고유 토큰 식별자를 삽입합니다. 서버 측에서 이 값을 저장하고 확인하여 비밀번호 재설정 또는 이메일 확인 흐름에서 토큰 재생 공격을 방지할 수 있습니다.

프로덕션 환경에서 none 알고리즘을 사용하지 마세요. alg: none이 선택되면 도구는 서명되지 않은 토큰을 생성하지만 빨간색 경고 패널을 표시합니다. 보안 감사 모드는 alg: none을 CRITICAL로 평가합니다. 이 알고리즘은 토큰 검증이 의도적으로 비활성화된 테스트 환경에서만 사용해야 합니다.

일반적인 문제 및 문제 해결

"유효하지 않은 JWT 형식. JWT는 점으로 구분된 3개의 부분이 있어야 합니다." — 붙여넣은 문자열에 정확히 두 개의 . 문자가 없습니다. 세 개의 세그먼트를 모두 포함하는 전체 토큰을 복사했는지 확인하세요. 후행 개행이나 공백이 있는 JWT도 실패합니다. 가장자리의 공백은 제거되지만 내장된 공백은 이 오류를 일으킵니다.

"유효하지 않은 Base64 인코딩" — 토큰의 세그먼트 중 하나가 유효한 Base64URL이 아닙니다. 복사하여 붙여넣는 중에 토큰이 잘렸거나, 문자열이 전혀 JWT가 아닌 OAuth의 불투명한 참조 토큰과 같은 다른 인코딩 형식인 경우 발생할 수 있습니다.

"시크릿 필요" / "개인 키 필요" — 서명 키 필드를 채우지 않고 인코딩을 클릭했습니다. HMAC 알고리즘은 비어 있지 않은 시크릿이 필요합니다. 비대칭 알고리즘은 PEM 개인 키가 필요합니다.

"유효하지 않은 JSON 페이로드" — 페이로드 편집기에 잘못된 형식의 JSON이 포함되어 있습니다. 후행 쉼표, 인용되지 않은 키, 또는 작은따옴표 문자열을 확인하세요. 클레임 빠른 추가 버튼은 항상 유효한 JSON을 생성하므로, 페이로드를 수동으로 편집한 경우 구문 오류를 찾아보세요.

올바른 키를 사용해도 검증이 유효하지 않음을 반환 — 토큰에 서명할 때 사용한 것과 동일한 알고리즘을 사용하고 있는지 확인하세요(디코드 모드가 자동으로 표시하는 헤더의 alg 필드에 표시됨). 비대칭 검증의 경우 개인 키가 아닌 공개 키를 제공하고 있는지 확인하세요.

alg: none 토큰이 검증에서 "검증할 수 없음"을 표시 — 서명되지 않은 토큰에는 검증할 서명이 없습니다. 도구는 이 경우에 대해 특정 "지원되지 않음" 상태를 반환하고 alg가 none일 때 검증 버튼을 비활성화합니다.

개인 정보 및 보안

JWT Encoder/Decoder는 브라우저에서 실행되는 jose 라이브러리를 사용하여 모든 토큰과 키를 로컬에서 처리합니다. JWT, 시크릿, 또는 개인 키는 서버로 전송되지 않습니다. 도구는 인코딩, 디코딩 또는 검증 중에 네트워크 요청을 하지 않습니다. 도구에 표시되는 노란색 보안 공지는 진지합니다. 프로덕션 서명 키에 대해서는 모든 온라인 도구를 신뢰하지 않는 것으로 취급하세요. 비프로덕션 자격 증명으로 개발 및 디버깅하는 경우 이 도구는 안전하게 사용할 수 있습니다. 브라우저 DevTools를 열고 네트워크 탭을 확인하여 동작을 직접 확인하세요. 어떤 작업 중에도 아웃바운드 요청이 표시되지 않습니다.

자주 묻는 질문

JWT 도구는 무료로 사용할 수 있나요? 예. 계정이나 가입 없이 완전히 무료입니다.

오프라인으로 사용할 수 있나요? 예. 페이지가 로드된 후에는 모든 인코딩, 디코딩, 감사가 로컬에서 실행됩니다. JWT 작업에 네트워크 요청이 이루어지지 않습니다.

토큰과 서명 키가 안전한가요? 도구는 작동 중에 네트워크 요청을 하지 않습니다. 토큰과 키는 브라우저 탭에 남아 있습니다. 그러나 브라우저 기반 도구에 프로덕션 개인 키를 입력하는 것은 피하세요. 테스트 키 또는 비프로덕션 자격 증명을 사용하세요.

어떤 알고리즘이 지원되나요? 도구는 13가지 알고리즘을 지원합니다: HS256, HS384, HS512(HMAC), RS256, RS384, RS512(RSA PKCS#1), ES256, ES384, ES512(ECDSA), PS256, PS384, PS512(RSA-PSS), 및 none(서명 없음). 암호화 작업은 jose 라이브러리가 처리합니다.

원본 시크릿 없이 서명을 검증할 수 있나요? 아니요. 서명 검증에는 서명 시크릿(HMAC) 또는 해당 공개 키(비대칭)가 필요합니다. 디코딩(헤더와 페이로드 읽기)에는 키가 필요하지 않으며 즉시 작동합니다.

개인 키는 어떤 형식이어야 하나요? 비대칭 서명에는 PKCS#8 PEM 형식 개인 키(-----BEGIN PRIVATE KEY-----로 시작)가 필요합니다. jose 라이브러리의 importPKCS8 함수가 가져오기를 처리합니다. PKCS#1 형식(-----BEGIN RSA PRIVATE KEY-----로 시작)은 지원되지 않습니다. openssl pkcs8 -topk8 -nocrypt를 사용하여 변환하세요.

디코드 모드와 보안 감사 모드의 차이는 무엇인가요? 디코드 모드는 토큰의 내용(헤더, 페이로드, 클레임, 만료 상태)을 표시하고 서명을 검증할 수 있습니다. 보안 감사 모드는 토큰 설계의 보안 약점(누락된 클레임, 약한 알고리즘, 만료된 토큰, 구성 문제)을 식별하는 데만 집중합니다. 두 모드 모두 서명 키가 필요하지 않습니다.

보안 감사가 HS256 토큰에 플래그를 표시하는 이유는 무엇인가요? 감사는(심각도 NOTE, WARNING이나 CRITICAL이 아님) HMAC 알고리즘이 공유 시크릿을 사용한다는 점을 지적합니다. 즉, 시크릿을 가진 서비스는 토큰을 검증하고 생성할 수 있습니다. 이것은 멀티 서비스 시스템에 대한 아키텍처적 고려 사항이지 토큰의 버그가 아닙니다. 노트는 하나의 서비스만 토큰을 발급할 수 있어야 하는 시스템에 비대칭 알고리즘을 권장합니다.

알고리즘을 모르고 JWT를 디코딩할 수 있나요? 예. 토큰 서명에 사용된 알고리즘은 헤더의 alg 필드에 저장됩니다. 디코딩은 먼저 헤더를 읽어 알고리즘을 파악합니다. 서명을 검증하려는 경우에만 알고리즘을 알고(키를 가지고) 있어야 합니다.

배치 모드는 어떻게 작동하나요? 토글 버튼으로 배치 모드를 활성화한 다음 줄당 하나의 JWT를 입력합니다. "모두 처리"를 클릭하여 모든 토큰을 디코딩합니다. 출력 테이블에는 각 토큰의 알고리즘(헤더에서)과 전체 페이로드가 JSON 문자열로 표시됩니다. 잘못된 형식의 토큰은 출력 열에 오류가 표시됩니다.

관련 도구

Base64 Encoder/Decoder는 JWT 세그먼트 내에서 사용되는 URL 안전 Base64 인코딩을 처리합니다. JSON Formatter는 중첩된 구조를 탐색하고 싶을 때 디코딩된 페이로드 JSON을 포맷하는 데 유용합니다. Password Generator는 HMAC 서명 키로 사용할 강력한 무작위 시크릿을 생성할 수 있습니다.

지금 JWT Encoder/Decoder 사용해보기: JWT Encoder/Decoder

마지막 업데이트: 2026년 2월 27일

계속 읽기

더 많은 글JWT Encoder/Decoder 사용해 보기