모두 인증 및 상태 관리를 위해 사용되는 기술
[브라우저] (쿠키 → 세션id)
↓
[세션] (세션db → 데이터)
- 쿠키 (Cookie) : 클라에 있는 저장소
- 세션 id, 사용자 설정을 저장
- 저장 위치: 클라이언트(only 브라우저).
- 세션 (Session) : id로 서버의 데이터에 접근해 관리하는 “방법”
- 서버가 사용자 상태(데이터)를 가짐 ⇒ db 필요 o
- 저장 위치: 서버
- 토큰 : 암호화된 문자열
- 앱에서는 쿠키 대신 토큰 사용(말고는 세션에 접근하는건 같음)
- JWT 토큰이 유명함
- 신원확인만 가능하고 자세한 사용자 데이터는 모름. ex. QR코드
- 사용자 상태를 가지지 x(stateless) ⇒ db 필요x
- 저장 위치: 클라이언트(Local/Session Storage, 쿠키 등).
JWT : 인증 정보를 포함한 암호화된 문자열.
사용 추천
- 간단한 상태 유지 → 쿠키
- 민감한 데이터 처리 → 세션
- 무상태 필요 or 앱 → 토큰 (JWT)
쿠키와 토큰은 서버가 생산, 클라가 저장
쿠키 생성의 동작 과정
- 클라이언트 요청
- 사용자가 웹사이트에 접속하면 브라우저는 서버에 HTTP 요청을 보냄
2. 서버에서 쿠키 생성 & HTTP 응답 헤더에 쿠키 포함 :
- 서버는 응답을 보내기 전에, 클라이언트가 저장해야 할 데이터(세션 ID, 사용자 설정, 인증 정보 등)를 포함한 쿠키를 생성
- 서버는
Set-Cookie
라는 HTTP 응답 헤더를 통해 쿠키를 클라이언트로 전송
3. 클라이언트가 쿠키 저장:
- 브라우저는 서버에서 받은 쿠키를 저장합니다.
- 이후 동일한 도메인으로 요청할 때마다 해당 쿠키를 자동으로 포함하여 서버에 전송합니다.
/*서버의 응답*/ HTTP/1.1 200 OK Set-Cookie: sessionId=abc123; HttpOnly; Secure; Path=/; Max-Age=3600 /*클라의 요청*/ GET /dashboard HTTP/1.1 Host: example.com Cookie: sessionId=abc123