쿠키: 클라이언트가 어떠한 웹사이트를 방문할 경우, 그 사이트가 사용되고 있는 서버를 통해 클라이언트의 브라우저에 설치되는 작은 기록 파일
로그인 요청
에 대한 응답을 작성할 때, 클라이언트 측에 저장하고 싶은 정보를 응답 헤더의 Set-Cookie
에 담는다.쿠키
를 요청 헤더의 Cookie
에 담아 보낸다.쿠키
에 담긴 정보를 바탕으로 해당 요청의 클라이언트가 누군지 식별할 수 있다.세션: 비밀번호 등 클라이언트의 인증 정보를 쿠키가 아닌 서버 측에 저장하고 관리한다
서버는 클라이언트의 로그인 요청에 대한 응답을 작성할 때, 인증 정보는 서버에 저장하고, 클라이언트 식별자인 JSESSIONID
를 쿠키에 담는다.
이후 클라이언트는 요청을 보낼 때마다 JSESSIONID
쿠키를 함께 보낸다.
그리하면 서버는 JSESSIONID
의 유효성을 판별해 클라이언트를 식별한다
서버가 클라이언트의 웹 브라우저에 의존하지 않아도 된다.
쿠키를 포함한 요청이 외부에 노출되어도 세션 ID 자체는 유의미한 개인 정보를 담지 않는다.
각 사용자마다 고유한 세션 ID가 발급되기 때문에, 요청이 들어올 때마다 회원 정보를 확인(로그인)할 필요 없다.
DB를 기반으로 공유 계정의 수를 제한시키거나, 사용자의 로그인을 제한시키는 등의 기능을 만들 수 있다.
사용자가 로그인을 위해 유저명, 비밀번호를 보내고, 비번이 맞다면 유저별 세션DB 공간을 만든다.
각 세션에는 별도의 ID가 있으며, 해당 세션 ID
는 쿠키를 통해 브라우저로 돌아오고 저장된다
따라서 같은 웹사이트의 다른 페이지로 이동하면 브라우저는 세션 ID를 가지고 있는 쿠키를 서버에게 보내고, 서버가 ID를 기반으로 세션 DB를 확인해 유저가 누구인지 알게된다.
쿠키는 브라우저에만 존재하기 때문에 IOS, Android에서는 쓸수 없음
→ 토큰을 이용