| 항목 | 쿠키/세션 기반 인증 | 토큰(JWT 등) 기반 인증 |
|---|---|---|
| 인증 상태 저장 위치 | 서버 (세션 DB 등) | 클라이언트 (브라우저에 저장) |
| 서버가 인증 정보 기억? | ✅ 기억함 (세션 ID → 사용자 매핑) | ❌ 기억하지 않음 (토큰에 모든 정보 포함) |
| 클라이언트가 보내는 것 | 쿠키에 담긴 세션 ID | Authorization 헤더에 JWT |
| 서버 저장소 필요 | ✅ 세션 저장소 필요 (메모리/DB 등) | ❌ 필요 없음 (Stateless) |
| CORS 대응 | 상대적으로 쉬움 (SameSite 설정) | 복잡할 수 있음 (헤더 직접 조작 필요) |
| XSS/CSRF 보안 | CSRF에 취약 → 방어 필요 | XSS에 취약 → 방어 필요 |
| 적합한 경우 | 전통적인 서버 렌더링 앱 (SSR) | SPA, 모바일 앱, Microservice 구조 등 |
[1] 로그인 요청
→ 서버: 사용자 인증 → 세션 생성
→ 응답: Set-Cookie: sessionId=abc123
[2] 이후 요청
→ 브라우저가 쿠키(sessionId) 자동 전송
→ 서버: sessionId → 유저 정보 조회 → 인증 완료
sessionId와 유저 정보를 세션 저장소에 저장sessionId=abc123 같은 값만 가지고 있음SameSite, CSRF 토큰, HttpOnly 등 방어 설정 필요