토큰 스튜디오
Privacy FirstJWT/JWK/JWKS를 검사하고 생성합니다.
Header
Payload
Signature
JWT란 무엇인가요?
JSON 웹 토큰(JWT)은 두 당사자 사이에 전달할 클레임을 표현하는 간결하고 URL에 안전한 방식입니다. JWT는 점으로 구분된 Base64URL로 인코딩된 세 부분, 즉 헤더(알고리즘과 타입), 페이로드(클레임), 서명으로 구성됩니다. 서명은 토큰이 변조되지 않았음을 보장합니다. JWT는 웹 API에서 인증과 정보 교환에 흔히 사용됩니다. 표준 클레임에는 sub(주체), iss(발급자), aud(대상), exp(만료), nbf(유효 시작), iat(발급 시간), jti(JWT ID)가 있습니다.
JWT 알고리즘
HS256/384/512는 SHA-2와 공유 비밀을 사용하는 HMAC을 사용합니다 — 단순하지만 양쪽 모두 같은 키를 가지고 있어야 합니다. RS256/384/512는 RSA PKCS#1 v1.5 비대칭 서명을 사용합니다 — 서비스가 공개 키만 있으면 되는 마이크로서비스 아키텍처에 이상적입니다. ES256/384/512는 NIST 곡선을 사용하는 ECDSA로 동등한 보안 수준에서 RSA보다 서명 크기가 작습니다. PS256/384/512는 RSA-PSS를 사용하는 확률적 변형으로, 최신 시스템에서 RS* 계열보다 선호됩니다.
JWK와 JWKS
JSON 웹 키(JWK)는 암호화 키를 나타내는 JSON 구조입니다. JWK 세트(JWKS)는 keys 속성 아래에 JWK 배열을 담은 JSON 구조입니다. 서비스는 잘 알려진 URL(예: /.well-known/jwks.json)에 JWKS를 공개하여, 클라이언트가 별도의 키 교환 없이도 JWT 검증에 필요한 공개 키를 가져올 수 있게 합니다. JWKS의 키는 JWT 헤더가 참조하는 kid(키 ID)로 식별됩니다.
보안 모범 사례
exp, nbf, iss, aud 클레임은 항상 서버 측에서 검증하세요. 프로덕션에서는 절대 alg: none 알고리즘을 사용하지 마세요 — 모든 서명 보호가 사라집니다. 여러 서비스가 토큰을 검증해야 한다면 HMAC보다 비대칭 알고리즘(RS*, ES*, PS*)을 선호하세요. 키를 정기적으로 교체하고 kid를 사용해 각 토큰에 서명한 키를 식별하세요. 개인 키는 안전하게 보관하고 버전 관리에 절대 커밋하지 마세요. 수명이 긴 JWT보다는 짧은 만료 시간과 리프레시 토큰을 사용하세요.