DevToolPal
한국어

JWT 생성 및 서명

JSON 페이로드로 JSON Web Token을 만들고 HS256/384/512 또는 PEM 개인 키를 쓰는 RS, PS, ES 알고리즘으로 서명합니다.

로컬에서 실행, 업로드 없음

옵션

시크릿 형식

페이로드(JSON)

0자 · 0 B

JWT

0자 · 0 B

기능

JSON Web Token(JWT, RFC 7519)은 점으로 구분된 세 부분으로 이루어진 간결하고 URL에 안전한 문자열입니다. 서명 알고리즘을 밝히는 헤더, 클레임을 담은 페이로드, 그리고 앞의 두 부분에 대한 서명입니다. API는 JWT를 Bearer 토큰으로, ID 제공자는 ID 토큰으로 사용합니다.

이 도구는 JSON 페이로드로 토큰을 만들고 서명합니다. 지원 알고리즘:

  • HS256, HS384, HS512: 공유 시크릿(텍스트 또는 Base64)을 쓰는 HMAC.
  • RS256, RS384, RS512와 PS256, PS384, PS512: PEM 개인 키를 쓰는 RSA 서명.
  • ES256, ES384, ES512: EC 개인 키를 쓰는 ECDSA 서명.

사용 방법

  1. 페이로드를 JSON 객체로 쓰거나 예시를 클릭합니다.
  2. 알고리즘을 고르고 입력 상자 위쪽에 시크릿을 입력하거나 PEM 개인 키를 붙여 넣습니다.
  3. 필요하면 iat를 현재 시각으로 설정하거나 만료(exp), 키 ID 같은 추가 헤더 필드를 넣습니다.
  4. 출력에서 토큰을 복사합니다. JWT 디코더에 붙여 넣어 내용을 확인할 수 있습니다.

예시

시크릿이 your-256-bit-secret일 때 아래 페이로드를 HS256으로 서명하면 jwt.io의 잘 알려진 예시 토큰이 나옵니다:

{"sub":"1234567890","name":"John Doe","iat":1516239022}

헤더는 항상 {"alg":"HS256","typ":"JWT"} 뒤에 추가한 필드가 붙는 형태로 쓰이며, alg는 언제나 선택한 알고리즘을 따릅니다.

권장 사항

exp 클레임으로 토큰 수명을 짧게 하고, iss와 aud를 설정해 한 서비스용 토큰이 다른 서비스에서 재사용되지 않게 하세요. 서버에서는 허용할 알고리즘을 명시한 목록으로 반드시 서명을 검증하고 none은 거부하세요. HMAC 시크릿은 길고 무작위여야 하며, 최소한 해시 출력 길이(HS256은 32바이트)만큼은 되어야 합니다.

자주 묻는 질문

› 어떤 알고리즘을 골라야 하나요?

서버가 검증에 쓰는 것을 고르세요. HS256은 공유 시크릿을 쓰며 한 시스템 안에서 흔히 씁니다. RS256과 ES256은 개인 키로 서명하고 누구나 공개 키로 검증할 수 있어, 여러 서비스가 확인하는 토큰에 알맞습니다. ES256 서명은 RS256보다 훨씬 짧습니다.

› 어떤 개인 키 형식을 지원하나요?

PEM 형식의 PKCS#8(BEGIN PRIVATE KEY), PKCS#1 RSA(BEGIN RSA PRIVATE KEY), SEC1 EC(BEGIN EC PRIVATE KEY)를 지원합니다. 암호화된 키는 먼저 패스프레이즈 없이 내보내야 합니다. ES256, ES384, ES512에는 각각 P-256, P-384, P-521 곡선의 키가 필요합니다.

› JWT 페이로드는 비밀인가요?

아니요. 헤더와 페이로드는 Base64URL로 인코딩만 되어 있어 토큰을 가진 사람은 누구나 읽을 수 있습니다. 서명은 변경을 막을 뿐 읽기를 막지 않습니다. 비밀번호 같은 비밀 정보를 JWT 페이로드에 넣지 마세요.

› 시크릿이나 개인 키가 저장되거나 전송되나요?

아니요. 서명은 브라우저의 Web Crypto API로 실행됩니다. 시크릿이나 키는 이 페이지의 메모리에만 있으며 저장되거나 주소창에 기록되거나 공유 링크에 포함되지 않습니다. 그래도 관리하지 않는 웹 페이지에 운영 환경 키를 붙여 넣지는 마세요.