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를 사용하여 토큰을 검사하고 검증하세요.