블로그로 돌아가기
jwt 2025-01-15

JWT 토큰 구조 이해하기

JSON 웹 토큰의 구조, 클레임, 보안에 대한 심층 분석입니다.

JWT(JSON 웹 토큰)는 당사자 간에 정보를 안전하게 전송하기 위한 개방형 표준입니다.

JWT 구조

JWT는 점으로 구분된 세 부분으로 구성됩니다:

xxxxx.yyyyy.zzzzz

Header.Payload.Signature

1. 헤더

토큰 유형과 서명 알고리즘 포함:

{

"alg": "HS256",

"typ": "JWT"

}

2. 페이로드

클레임(사용자에 대한 설명) 포함:

{

"sub": "1234567890",

"name": "John Doe",

"iat": 1516239022,

"exp": 1516242622

}

3. 서명

토큰이 변조되지 않았음을 검증:

HMACSHA256(

base64UrlEncode(header) + "." +

base64UrlEncode(payload),

secret

)

표준 클레임

  • iss: 발급자
  • sub: 주체(사용자 ID)
  • aud: 대상
  • exp: 만료 시간
  • iat: 발급 시간
  • nbf: 유효 시작 시간

보안 모범 사례

1. 강력한 시크릿 사용: 최소 256비트

2. 만료 설정: 항상 exp 클레임 포함

3. HTTPS 사용: HTTP로 전송 금지

4. 모든 클레임 검증: iss, aud, exp 확인

5. 민감한 데이터 저장 금지: 페이로드는 읽을 수 있음

일반적인 알고리즘

  • HS256: SHA-256이 포함된 HMAC(대칭)
  • RS256: SHA-256이 포함된 RSA(비대칭)
  • ES256: SHA-256이 포함된 ECDSA(비대칭)

JWT Decoder를 사용하여 토큰을 검사하고 검증하세요.