쿠키, 세션, 토큰
이 셋은 사용자 인증과 정보 저장을 위해서 사용되는 기술들이다. 한번 알아보자
쿠키
쿠키는 무엇인가
- 쿠키는 서버가 사용자 브라우저에 저장하는 작은 데이터 조각이다.
- 사용자가 웹 사이트를 방문할 때마다 브라우저는 이 쿠키를 서버에 함께 전송한다.
왜 쓰는가
- 사용자 세션관리
- 로그인, 쇼핑카트
- 개인화
- 사용자 설정(ex.언어), 테마
- 트래킹
- 사용자 행동 분석을 통한 맞춤 제공
제한 사항
- 쿠키는 특정 도메인에 제한되고, 설정된 유효 기간동안만 유지된다.
- 쿠키의 크기는 제한적이며, 많은 양의 데이터를 저장하기에는 적합하지 않다.
세션 그리고 토큰
HTTP프로토콜은 stateless하다
- HTTP 프로토콜은 stateless 하므로, 서버는 사용자의 이전 요청을 기억하지 못한다.
- 그렇기 때문에, 각 요청은 독립적으로 처리된다.
세션의 역할
- 세션은 서버가 사용자의 상태 (예를 들어, 로그인상태)를 유지하기 위해서 사용한다.
- 사용자가 로그인하면, 서버는 고유한 세션 id를 생성하고 이것을 쿠키에 저장하여 브라우저에 전달한다.
쿠키와 세션의 관계
- 사용자가 이후 요청을 보낼때마다, 브라우저는 이 세션 id가 담긴 쿠키를 함께 전송한다.
- 서버는 쿠키에서 세션 id를 읽고, 해당 사용자의 상태를 파악하여 적절한 응답을 한다.
토큰 사용 이유
- 모든 요청마다 데이터 베이스를 조회하여 세션을 확인하는 것은 비효율적일 수 있다.
- 이것을 해결하기 위해서
토큰
이라는 기술이 사용된다.
- 토큰은 서버에서 생성한 암호화된 문자열로, 사용자의 인증정보를 담고 있다.
토큰 기반 인증
- 사용자가 로그인하면 서버는 토큰을 생성하여 사용자에게 전달한다.
- 이후 사용자는 요청마다 이 토큰을 서버에 전송하여 자신을 인증한다.
- 토큰은 클라이언트 측에 저장되며, 서버는 토큰을 검증하여 사용자를 식별한다.
요약
쿠키
- 브라우저에 저장되는 작은 데이터 조각
- 사용자의 상태를 서버에 전달하는 역할
세션
- 서버 측에서 사용자의 상태를 유지하는 방법
- 쿠키에 세션 id를 저장하여 사용
토큰
- 사용자 인증 정보를 암호화된 문자열로 담은 것
- 토큰을 통해서 요청마다 사용자를 인증한다.