I. 핵심 개념 및 원리 비교
| 속성 | 세션 (Session) | 큰 (JWT) |
| 인증 방식 | 상태 기반 (Stateful) | 무상태 기반 (Stateless) |
| 데이터 저장 | 서버 측 (DB, 메모리, Redis)에 사용자 상태 저장 | 토큰 자체에 사용자 정보 (Claim) 및 서명 포함 |
| 클라이언트 저장 | 고유한 세션 ID를 쿠키로 저장 | JWT 전체를 HTTP 헤더, 쿠키 또는 로컬 스토리지에 저장 |
| 검증 메커니즘 | 세션 ID로 서버/DB 조회 → 사용자 정보 확인 | 토큰의 서명(Signature) 검증 → 유효성 확인 |
II. 장점 및 단점
구분 장점 및 단점
| 구분 | 장점 | 단점 |
| 세션 | 1. 즉시 권한 회수 용이 (서버에서 ID 무효화) 2. HttpOnly 쿠키 사용 시 XSS 공격 방어에 유리 3. 상태 변화 관리(장바구니 등)에 용이 |
1. 서버 부하 높음 (매 요청마다 DB/저장소 조회) 2. 수평적 확장(Scaling) 시 세션 공유 시스템 구축 필요 |
| 토큰 | 1. 서버 부하 낮음 (DB 조회 불필요, 연산만 사용) 2. 수평적 확장에 매우 유리 (서버 독립적) 3. 모바일 앱, 마이크로서비스 등 다양한 환경에 적합 |
1. 토큰 만료 전 즉시 회수 어려움 (블랙리스트, 리프레쉬 토큰 설정 필요) 2. 저장 위치에 따라 보안 취약 (Local Storage는 XSS에 취약) |
III. 적용 환경 및 선택 기준
💡 선택 기준: 서비스의 규모, 사용자 상태 변화 빈도, 보안의 민감도 등을 고려하여 결정해야한다.
적용 환경 권장 방식 핵심 이유
| 대규모 트래픽/확장성 | 토큰 (JWT) | 서버/DB 부하를 최소화하고 무상태로 수평 확장이 용이함 (예: 넷플릭스) |
| 즉각적 권한 통제 | 세션 | 강제 로그아웃, 실시간 권한 변경 등 즉각적인 상태 변경이 필수적임 (예: 금융, 관리자 시스템) |
| 마이크로서비스 | 토큰 (JWT) | 서비스 간에 인증을 독립적으로 처리해야 하는 분산 환경에 유리 |
| 상태 변화 관리 | 세션 | 장바구니, 특정 폼 작성 상태 등 사용자 상태를 서버가 지속 관리해야 하는 경우 |
IV. JWT 보안 필수 전략
토큰 기반 인증 채택 시, 무상태의 단점을 보완하기 위해 다음 전략이 필수적입니다.
- 🔒 Access Token 만료 시간 최소화:
- Access Token을 15분 이하로 짧게 설정하여 탈취 시 피해 시간을 제한합니다.
- 🔑 Refresh Token 사용:
- 긴 만료 시간을 가진 Refresh Token을 별도로 사용하여 안전한 저장소(예: HttpOnly Cookie)에 보관하고, Access Token 재발급 용도로만 사용합니다.
- ⛔ 민감 정보 미포함:
- JWT Payload는 인코딩될 뿐 암호화되지 않습니다. 비밀번호, 개인 식별 정보 등 민감한 정보는 절대 포함하지 않습니다.
'스터디 > JWT' 카테고리의 다른 글
| Bearer 인증 vs. 쿠키 인증 vs. Basic 인증 차이점 (0) | 2026.01.14 |
|---|