JWT 생성기

JWT 생성

브라우저에서 직접 JWT 토큰을 생성하고 서명할 수 있습니다. 페이로드 클레임(표준 sub, aud, exp 등과 사용자 정의 내용 포함)을 입력하고, 알고리즘(HS256(공유 비밀 사용) 또는 RS256/ES256(사용자 비밀 키 사용))을 선택하면 도구가 3부 구성의 토큰을 자동으로 생성합니다. 로컬 개발, 로드 테스트 및 인증 문제 재현에 유용합니다.

JWT를 생성하는 방법

  1. 1

    페이로드를 입력하세요

    표준 청구항목(`sub`, `iss`, `aud`, `exp`, `iat`, `nbf`) 및 앱에서 요구하는 모든 사용자 정의 청구항목을 포함합니다.

  2. 2

    알고리즘을 선택하세요

    공유 비밀을 사용하는 HS256/384/512 또는 PEM 형식의 사설 키를 사용하는 RS256/ES256.

  3. 3

    키를 제공하세요

    HMAC용 공유 비밀 텍스트를 입력하거나, RSA/ECDSA용 사설 키를 붙여넣으세요. 두 경우 모두 브라우저에 저장됩니다.

  4. 4

    생성됨

    출력은 서명된 토큰입니다. 이를 복사하여 테스트에 사용하고, JWT 디코더를 사용해 해독하여 검토하세요.

인증된 사용자 토큰의 일반적인 페이로드

{
  "iss": "https://auth.example.com",
  "aud": "api.example.com",
  "sub": "user_12345",
  "iat": 1713398400,
  "nbf": 1713398400,
  "exp": 1713402000,
  "jti": "3c7c7e14-2de4-41f0-bf09-1eb5cfad4c01",
  "scope": "read:profile write:posts"
}

알고리즘 선택: HMAC 대 비대칭 알고리즘

알고리즘 키 유형 사용 시
HS256 256비트 공유 비밀 스스로 서명 및 검증하는 모놀리스트 방식
HS384/512 보안 기간이 더 길다 HS256과 동일하며 보안성이 더 강하다
RS256 RSA 2048+ 발행인 서명; 다수의 서비스에서 공개 키를 사용하여 인증합니다
ES256 ECDSA P-256 RS256과 동일하지만 서명 크기가 더 작음
EdDSA Ed25519 가장 빠른 비대칭 인증 기법, 최소 키 사용

키 강도

  • HMAC 비밀 값은 최소한 알고리즘의 출력 크기만큼 충분한 엔트로피를 가져야 합니다. HS256은 256개의 무작위 비트(32바이트)가 필요하며, 이보다 짧으면 브루트포스 공격으로 해독될 수 있습니다.
  • RSA 키는 최소 2048비트여야 하며, 장기간 사용되는 토큰의 경우 3072비트 또는 4096비트가 권장됩니다.
  • ECDSA(ES256)는 훨씬 더 작은 키와 더 빠른 서명 처리 속도를 제공함에도 불구하고 RSA 3072와 비슷한 보안 수준을 실현합니다.

유효기간 지침

토큰 유형 일반적인 exp 유효 기간
접근 토큰 5~60분
갱신 토큰 일에서 주까지
비밀번호 재설정 5~15분
이메일 인증 24시간
서비스 간 처리 1~5분(단축형)

짧은 만료 시간과 갱신 토큰을 함께 사용하는 것이 현대적인 방식입니다. 반면 장기간 유효한 액세스 토큰은 침해되었을 때 취소하기가 매우 어렵습니다.

흔한 오류들

  • 프로덕션 환경에서 테스트용 비밀을 재사용하는 경우. 생성기가 비밀의 보안성이 낮아 보일 경우 HS256 비밀과 출력된 JWT를 ‘테스트용만’으로 표시합니다. 이 경고는 반드시 신뢰해야 합니다.
  • exp 없이 서명하는 경우. 만료일이 없는 JWT는 영구히 유효합니다. 아주 타당한 사유와 취소 목록이 있는 경우가 아니라면 항상 exp를 설정하십시오.
  • 검증 측에서 헤더의 alg를 그대로 사용하는 경우. 검증 단계에서는 항상 허용 알고리즘 목록(화이트리스트)만 적용하고, 토큰이 요구하는 대로 따르지 마십시오.
  • 여기에 실제 개인 키를 붙여넣는 경우. 이 생성기는 브라우저에서 실행되지만 개인 키는 비밀 정보로 취급하십시오. 운영용 키가 아닌 테스트용 키만 사용하세요.

자주 묻는 질문

아니요. 서명은 웹 암호화 API를 사용하여 브라우저 내에서 수행됩니다. 키는 결코 사용자의 기기에서 나가지 않습니다. 다만 프로덕션 키의 경우 브라우저가 아닌 통제된 환경에서 생성하고 서명해야 합니다.

동일한 서비스가 서명 및 검증을 수행하는 모노리스톤 구조에서는 HS256이 적합합니다. 발급자와 검증자가 별개인 경우에는 RS256 또는 ES256이 더 적합하며, 이 경우 서명 키를 공개하지 않고도 공개 키를 공유할 수 있습니다.

접근 토큰의 경우 일반적으로 소요 시간은 5~15분입니다. 원활한 사용자 경험을 위해 수명이 더 긴 갱신 토큰을 사용하십시오. exp 클레임 없이 JWT를 발급하지 마십시오.

이 도구는 고장 난 토큰 또는 서명이 없는 토큰을 의도적으로 테스트하기 위해 alg: none를 출력할 수 있도록 지원하며, 명확한 경고 메시지를 표시합니다. 생산 코드에서는 이러한 토큰을 절대 사용하지 마십시오.

관련 도구

이 도구는 다른 언어로도 제공됩니다