JWT
JSON WEB TOKEN
1. 개요
2. 기본 개념
2.1. JSON Web Token 구조
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 <-- Header (base64)
. eyJzdWIiOiIxMjMiLCJyb2xlIjoiVVNFUiIsImlhdCI6MTYy... <-- Payload (base64)
. SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c <-- Signature (base64)2.2. 왜 토큰 기반?
3. JWT Payload
3.1. 필수 등록된 클레임 vs. 커스텀 클레임
3.2. 과도한 정보 넣지 말 것
3.3. 만료 시간(exp)
4. JWT LifeCycle (발급, 만료, 재발급)
4.1. Access Token과 Refresh Token
4.2. 발급 시점
4.3. 만료 및 재발급
4.4. Refresh Token 저장 방법
5. JWT 발급/검증 알고리즘
5.1. HMAC (HS256 등)
5.2. RSA or ECDSA
6. 서버에서 JWT 검증 흐름
7. 세션less(Stateless) 장점 vs. 주의점
7.1. 장점
7.2. 주의점
8. JWT in E-Commerce Project
8.1. User Login Flow
8.2. Subsequent API Calls
8.3. Token Expiry
9. 만료 전 토큰 재발급(토큰 로테이션)
10. 로그아웃 처리
11. Implementation Example (Java Spring Boot)
12. Example Payload
13. 두 가지 큰 접근법
13.1. 100% Stateless (No Blacklist)
13.2. Blacklisting (Redis / DB 저장)
14. 시나리오 비교
시나리오 1. User가 정상적으로 로그아웃
시나리오 2. Access Token 도난, 사용자 위험
시나리오 3. 비밀번호 변경 / 회원 권한(ROLE) 변경
시나리오 4. 한 기기(토큰)만 강제 만료
시나리오 5. 모든 기기(모든 토큰) 만료(“로그아웃 다른 기기”)
시나리오 6. Refresh Token마저 도난
시나리오 7. Token Expired 자동 만료
시나리오 8. 토큰 만료 직전 재발급 (Rotation)
시나리오 9. 오래된 Refresh Token, 중간에 무효화?
시나리오 10. 서버 재부팅 / Autoscaling
Last updated