✅ 쿠키/세션 기반 인증 vs 토큰(JWT) 기반 인증 — 전체 비교

항목 쿠키/세션 기반 인증 토큰(JWT 등) 기반 인증
인증 상태 저장 위치 서버 (세션 DB 등) 클라이언트 (브라우저에 저장)
서버가 인증 정보 기억? ✅ 기억함 (세션 ID → 사용자 매핑) ❌ 기억하지 않음 (토큰에 모든 정보 포함)
클라이언트가 보내는 것 쿠키에 담긴 세션 ID Authorization 헤더에 JWT
서버 저장소 필요 ✅ 세션 저장소 필요 (메모리/DB 등) ❌ 필요 없음 (Stateless)
CORS 대응 상대적으로 쉬움 (SameSite 설정) 복잡할 수 있음 (헤더 직접 조작 필요)
XSS/CSRF 보안 CSRF에 취약 → 방어 필요 XSS에 취약 → 방어 필요
적합한 경우 전통적인 서버 렌더링 앱 (SSR) SPA, 모바일 앱, Microservice 구조 등

✅ 1. 쿠키/세션 기반 인증 흐름

🧭 전체 흐름

[1] 로그인 요청
→ 서버: 사용자 인증 → 세션 생성
→ 응답: Set-Cookie: sessionId=abc123

[2] 이후 요청
→ 브라우저가 쿠키(sessionId) 자동 전송
→ 서버: sessionId → 유저 정보 조회 → 인증 완료

📌 구조 설명

✅ 세션 저장 위치

✅ 클라이언트는 세션 ID만 저장

✅ 서버가 상태를 기억함 (Stateful)

✅ 보안


✅ 2. 토큰(JWT) 기반 인증 흐름

🧭 전체 흐름