JWT Generator
HMAC 알고리즘으로 JSON Web Token을 생성하고 서명해요. HS256, HS384, HS512 중 선택 — 모두 Web Crypto API로 클라이언트 사이드에서 서명됩니다.
작동 방식: 알고리즘을 설정하고, 페이로드 JSON을 편집하고, 비밀 키를 입력한 후 생성을 클릭하세요. 토큰은 Web Crypto API를 사용해 전적으로 브라우저에서 서명돼요 — 비밀은 절대 기기를 벗어나지 않아요.
{
"alg": "HS256",
"typ": "JWT"
}서명된 JWT가 여기에 표시돼요...
JWT란 뭔가요?
JSON Web Token(JWT)은 두 당사자 간에 클레임을 나타내는 컴팩트하고 URL 안전한 방식이에요. 점(.)으로 구분된 세 부분으로 구성돼요: 헤더(알고리즘과 토큰 타입), 페이로드(클레임/데이터), 서명. JWT는 웹 애플리케이션과 API의 인증, 인가, 정보 교환에 광범위하게 사용돼요.
JWT 서명의 작동 원리
JWT 서명은 암호화 알고리즘을 사용해 토큰이 변조되지 않았음을 보장해요. HMAC 알고리즘(HS256, HS384, HS512)은 공유 비밀 키를 사용하죠 — 같은 키로 토큰을 서명하고 검증해요. 서명은 비밀을 이용해 인코딩된 헤더와 페이로드를 해싱하여 생성돼요. 비밀을 가진 누구나 토큰의 진위를 확인할 수 있지만, 비밀 없이는 유효한 서명을 위조하는 것이 계산상 불가능해요.
일반적인 JWT 클레임
JWT 페이로드는 클레임을 포함해요 — 사용자나 토큰에 대한 정보를 담은 키-값 쌍이죠. 표준 클레임에는 iss(발급자), sub(주체/사용자 ID), aud(대상자), exp(만료 시간 Unix 타임스탐프), nbf(이전 사용 불가), iat(발급 시간), jti(고유 토큰 ID)가 있어요. 커스텀 클레임으로는 사용자 역할, 권한, 이메일 주소 같은 JSON 직렬화 가능한 모든 데이터를 담을 수 있어요. 페이로드는 작게 유지하세요 — JWT는 모든 요청과 함께 전송돼요.
JWT 보안 모범 사례
- 항상 만료 시간(exp)을 설정하세요 — 만료 없는 토큰은 보안 위험이에요
- 강력한 비밀을 사용하세요 — HS256의 경우 최소 256비트, 이상적으로는 임의 바이트
- 페이로드에 민감한 데이터를 저장하지 마세요 — JWT는 인코딩되지만 암호화되지 않아요
- HTTPS를 사용하세요 — 암호화되지 않은 연결에서 JWT가 도청될 수 있어요
- 서버에서 모든 클레임을 검증하세요 — 클라이언트의 토큰을 맹목적으로 신뢰하지 마세요
- 분산 시스템에는 RS256을 고려하세요 — 비대칭 키는 비밀 공유를 피해요