인증 관련 라이브러리를 잘 활용하기 위해 인증 기능을 구현하는 방법에 대한 기본적인 원리를 알아보자!
HTTP 쿠키
- 쿠키는 HTTP 프로토콜에 포함되어 있는 웹브라우저 기술.
- HTTP 쿠키(웹 쿠키, 브라우저 쿠키)는 서버가 사용자의 웹 브라우저에 전송하는 작은 데이터 조각
- 라우터는 그 데이터 조각들을 저장해 놓았다가, 동일한 서버에 재 요청 시 저장된 데이터를 함께 전송.
- 웹서버의 정보를 웹브라우저에 저장해서 개인화, 인증, 사용자 추적 등의 기능을 구현할 수 있도록 함.
- 쿠키는 두 요청이 동일한 브라우저에서 들어왔는지 아닌지를 판단할 때 주로 사용.
- 이를 이용하면 사용자의 로그인 상태를 유지할 수 있음.
- 상태가 없는 HTTP 프로토콜에서 상태 정보를 기억시켜주기 때문.
용도
- Session management : 서버에 저장해야 할 로그인, 장바구니, 게임 스코어 등의 정보 관리.
- Personalization : 사용자 선호, 테마 등의 세팅.
- Tracking : 사용자 행동을 기록하고 분석하는 용도.
쿠키로 로그인 기능을 만들어도 될까?
정답은 NO!
- 과거엔 클라이언트 측에 정보를 저장할 때 쿠키를 주로 사용했지만, 보안이 약하며 모든 요청마다 쿠키가 함께 전송되기 때문에 성능이 떨어질 수 있음.
- 정보를 클라이언트 측에 저장하려면 Modern APIs의 종류인 웹 스토리지 API (localStorage와 sessionStorage) 와 IndexedDB를 사용하기.
쿠키 만들기
Set-Cookie
Set-Cookie: <cookie-name>=<cookie-value>