언제 쓰나
스테이징 환경에서 인증을 디버깅할 때, QA 가 401 에러를 보고했을 때, 또는 키 회전 후 새 토큰을 즉석에서 만들어 보고 싶을 때 씁니다. 받은 토큰이 알려진 비밀 키로 서명된 게 맞는지 확인하는 용도로도 쓸 수 있습니다.
두 모드
- 서명 (Sign) — 헤더 추가 필드, 페이로드, 비밀 키, 알고리즘을 입력하면 바로 JWT 토큰이 만들어집니다. 헤더의 alg · typ 은 자동으로 채워집니다.
- 검증 (Verify) — 토큰과 비밀 키를 넣으면 서명을 재계산해 일치 여부를 표시합니다. 헤더·페이로드도 함께 보여 줍니다.
지원 알고리즘
HS256 · HS384 · HS512 (HMAC) — 모두 Web Crypto API 의 SubtleCrypto 가 직접 처리합니다. 외부 라이브러리는 쓰지 않습니다. RS256 · ES256 같은 비대칭 알고리즘은 PEM 키 파싱과 import 비용이 크고 검색 수요가 낮아 의도적으로 빠져 있습니다.
alg: none 은 RFC 7519 §6.1 의 unsecured JWT — 서명이 없습니다.
서명 모드에서는 디버깅·학습용으로 만들 수 있지만, 검증 모드는
무조건 거부합니다. alg=none 토큰을 의도치 않게 통과시키는 사례
("alg=none attack") 가 다수 있어 명시적으로 차단합니다.
비밀 키는 페이지 안에서만
서명·검증 둘 다 브라우저 안에서 실행되어 비밀 키와 페이로드 모두 서버로 전송되지 않습니다. 다만 production 키는 화면 캡처·브라우저 메모리 잔존 위험이 있으니 회사 정책에 따라 처리하세요. 디버깅·스테이징 키 위주로 사용 권장.
이럴 땐 안 맞습니다
- 비대칭 (RS256·ES256·EdDSA) — 본 도구 미지원. jose · jsonwebtoken 같은 서버 라이브러리를 쓰세요.
- production 키 다루기 — 보안상 권장하지 않습니다. 키 회전·보관은 HSM 또는 비밀 관리 시스템(KMS) 으로.
- JWE 암호화 — 본 도구는 서명(JWS) 만. JWE (Encrypted) 는 미지원.
비밀 키는 페이지 안에만
HMAC 서명·검증은 모두 Web Crypto API. 비밀 키와 페이로드 모두 브라우저 안에서만 다뤄지고 외부 서버로 전송되지 않습니다. RFC 7519 준수, `alg: none` 토큰은 검증 단계에서 명시적으로 거부됩니다 (alg=none attack 방지).