개인정보 보호: 이 도구는 브라우저에서 완전히 실행됩니다. 네트워크 요청이 발생하지 않습니다. 토큰 데이터는 기기에만 남습니다.

JSON Web Token(JWT)이란?

JSON Web Token(JWT)은 당사자 간에 JSON 객체로 정보를 안전하게 전송하기 위한 개방형 표준(RFC 7519)입니다. JWT는 웹 API에서 인증 및 정보 교환에 일반적으로 사용됩니다. 토큰은 디지털 서명되어 무결성을 확인할 수 있지만 — 기본적으로 페이로드는 Base64 인코딩만 되어 있으며 암호화되지 않습니다.

JWT는 점(.)으로 구분된 세 부분으로 구성됩니다: Header(알고리즘 및 토큰 유형), Payload(클레임/데이터), Signature(토큰이 변조되지 않았는지 확인하는 데 사용).

JWT 표준 클레임

  • iss (Issuer) — 토큰을 생성하고 서명한 주체
  • sub (Subject) — 토큰이 나타내는 대상 (보통 사용자 ID)
  • aud (Audience) — 토큰의 수신 대상
  • exp (Expiration Time) — 토큰 만료 시간 (Unix 타임스탬프)
  • iat (Issued At) — 토큰 발급 시간
  • nbf (Not Before) — 이 시간 이전에는 토큰이 유효하지 않음
  • jti (JWT ID) — 토큰의 고유 식별자

JWT 보안 팁

  • JWT 페이로드에 민감한 데이터를 저장하지 마세요 — 페이로드는 Base64 인코딩만 되어 있으며 암호화되지 않습니다. 누구나 디코딩할 수 있습니다.
  • 항상 서버 측에서 서명을 확인하세요 — JWT를 디코딩했다고 유효한 것은 아닙니다. 항상 비밀 키로 서명을 확인하세요.
  • 만료 시간을 짧게 유지하세요 — 긴 세션에는 리프레시 토큰을 사용하세요. 짧은 수명의 액세스 토큰(15-60분)은 노출을 제한합니다.
  • "none" 알고리즘을 피하세요 — 일부 취약한 구현은 서명되지 않은 토큰을 허용합니다. 항상 특정 알고리즘을 강제하세요.
  • HTTPS만 사용하세요 — 가로채기를 방지하기 위해 암호화된 연결로만 JWT를 전송하세요.

JWT에 대한 자주 묻는 질문

브라우저에서 JWT 토큰을 디코딩하는 것은 안전한가요?

네, JWT 디코딩은 항상 안전합니다. 헤더와 페이로드는 암호화가 아닌 Base64URL 인코딩만 되어 있기 때문입니다. 토큰을 가진 누구나 내용을 읽을 수 있습니다 — 이것은 의도된 설계입니다. 이 도구는 브라우저에서 완전히 JWT를 디코딩하며, 토큰은 어떤 서버로도 전송되지 않습니다. 이것이 JWT 페이로드에 비밀번호, 개인 키 또는 민감한 비밀을 저장하면 안 되는 이유이기도 합니다.

비밀 키 없이 JWT 서명을 검증할 수 있나요?

아니요. JWT 서명 검증에는 비밀 키(HS256과 같은 HMAC 알고리즘의 경우) 또는 공개 키(RS256, ES256의 경우)가 필요합니다. 키 없이 헤더와 페이로드를 항상 디코딩할 수 있지만, 토큰이 변조되지 않았는지 확인할 수는 없습니다. 서명 검증은 서버 측에서 이루어져야 합니다. 이 도구는 검사를 위해 디코딩된 토큰 내용을 보여주며, 서명 유효성을 확인하지는 않습니다.

JWT 토큰이 예상치 않게 만료되는 이유는 무엇인가요?

JWT 토큰은 exp 클레임을 포함합니다 — 토큰 만료 시점을 나타내는 Unix 타임스탬프입니다. 현재 시간이 이 값을 초과하면 토큰이 거부됩니다. 이것은 보안을 위한 의도된 설계입니다. 여기서 exp 값을 확인하여 토큰이 언제 만료되는지 파악하세요. 토큰이 너무 빨리 만료되면 서버와 클라이언트 간의 시계 오차를 확인하세요 — 몇 분의 차이만으로도 문제가 발생합니다. NTP를 사용하여 서버 시계를 동기화하세요.

JWT 토큰 서명에 어떤 알고리즘을 사용해야 하나요?

대부분의 애플리케이션에는 RS256(RSA + SHA-256)이 권장됩니다. 비대칭 키를 사용하기 때문입니다 — 개인 키로 서명하고 공개 키로 검증하므로 공개 키를 안전하게 공유할 수 있습니다. HS256(HMAC + SHA-256)은 더 간단하지만 토큰을 검증하는 모든 서비스와 비밀 키를 공유해야 합니다. "none" 알고리즘은 절대 사용하지 마세요 — 일부 취약한 구현은 서명되지 않은 토큰을 허용하며, 이는 심각한 보안 결함입니다.

관련 개발자 도구