alltools.one
Security
2026-02-14
9 min
alltools.one Team
jwtauthenticationsecurityapitokens

JWT 토큰 설명: 구조, 보안, 모범 사례

JSON Web Token은 거의 모든 현대 인증 시스템에 등장합니다. Authorization 헤더에 있는 긴 문자열 — eyJhbGciOiJIUzI1NiIs... — 이 바로 JWT이며, 그 내부 구조와 작동 방식을 이해하는 것은 안전한 애플리케이션 구축에 필수적입니다.

JWT란 무엇인가?

JWT는 두 당사자 간에 클레임(데이터)을 전달하는 컴팩트하고 URL 안전한 토큰 포맷입니다. 자기 완결적으로 — 토큰 자체에 진위 확인과 사용자 데이터 추출에 필요한 정보가 포함되어 있어 데이터베이스 조회가 필요 없습니다.

JWT 인코더/디코더로 JWT를 즉시 디코딩하세요. 토큰을 붙여넣으면 헤더, 페이로드, 서명이 분리되어 표시됩니다.

JWT 구조: 세 부분

모든 JWT는 점으로 구분된 세 개의 Base64URL 인코딩 부분으로 구성됩니다:

header.payload.signature

헤더

{
  "alg": "HS256",
  "typ": "JWT"
}

서명 알고리즘과 토큰 유형을 지정합니다.

페이로드

{
  "sub": "user123",
  "name": "Alex Chen",
  "role": "admin",
  "iat": 1708963200,
  "exp": 1709049600
}

클레임 — 실제 데이터를 포함합니다. 표준 클레임에는 sub (주체), iat (발행 시간), exp (만료) 등이 있습니다.

서명

인코딩된 헤더와 페이로드를 비밀 키로 서명하여 생성됩니다. 이것은 변조를 방지합니다 — 어떤 수정이든 서명을 무효화합니다.

JWT 인증의 작동 방식

  1. 사용자가 자격 증명으로 로그인
  2. 서버가 사용자 클레임이 포함된 JWT를 생성하고 서명
  3. 서버가 JWT를 클라이언트에 반환
  4. 클라이언트가 이후 요청에서 Authorization 헤더에 JWT를 포함하여 전송
  5. 서버가 서명을 검증하고 클레임을 추출 — 데이터베이스 쿼리 불필요

보안 모범 사례

반드시 서명을 검증하세요

서명을 검증하지 않고 JWT를 신뢰하지 마세요. 개발 중에는 JWT 디코더로 페이로드를 확인하되, 운영 환경에서는 반드시 암호학적으로 검증하세요.

짧은 만료 시간 사용

JWT는 발행 후 취소할 수 없습니다 (세션 토큰과 달리). 만료 시간을 짧게 유지하고 (15-60분) 장기 세션에는 리프레시 토큰을 사용하세요.

올바른 알고리즘 선택

  • HS256 — SHA-256을 사용하는 HMAC, 대칭 키. 단순하고 빠르며 단일 서버 앱에 적합
  • RS256 — SHA-256을 사용하는 RSA, 비대칭 키. 여러 서비스에서 토큰을 검증하는 분산 시스템에 적합
  • 절대로 "none"을 사용하지 마세요alg: "none" 취약점은 실제 보안 사고를 일으킨 바 있습니다

비밀 키 보호

JWT 서명 키는 인증 시스템의 마스터 키입니다. 안전하게 저장하고, 주기적으로 교체하며, 클라이언트 측 코드에 노출하지 마세요.

페이로드에 민감한 데이터를 저장하지 마세요

JWT 페이로드는 Base64 인코딩되어 있을 뿐 암호화되어 있지 않습니다. 누구나 디코딩할 수 있습니다. 비밀번호, 신용카드 번호, 비밀 정보를 포함하지 마세요.

일반적인 JWT 실수

  1. 만료 검증 미실시 — 항상 exp 클레임을 확인하세요
  2. localStorage에 JWT 저장 — XSS 공격에 취약합니다. 대신 httpOnly 쿠키를 사용하세요
  3. 과도한 크기의 토큰 — JWT는 모든 요청 헤더에 포함됩니다. 페이로드를 간결하게 유지하세요
  4. HTTPS 미사용 — HTTP로 전송된 JWT는 가로채기 당할 수 있습니다

자주 묻는 질문

JWT를 취소할 수 있나요?

직접적으로는 불가능합니다 — JWT는 상태 비저장입니다. 우회 방법으로는 짧은 만료 시간, 토큰 블랙리스트, 서명 키 변경 (모든 토큰을 무효화) 등이 있습니다.

세션에 JWT를 사용해야 하나요?

JWT는 API 인증과 마이크로서비스에 잘 작동합니다. 전통적인 웹 세션의 경우, 쿠키를 사용한 서버 측 세션이 더 간단하고 안전한 경우가 많습니다.

JWT와 OAuth는 어떻게 다른가요?

OAuth는 인가 프레임워크입니다. JWT는 토큰 포맷입니다. OAuth는 액세스 토큰으로 JWT를 사용할 수 있지만, 서로 다른 문제를 해결합니다.

관련 리소스

Published on 2026-02-14
JWT Tokens Explained: Structure, Security, Best Practices | alltools.one