쿠키와 세션의 필요 이유
HTTP특징 Connectionless, Stateless 때문에 클라이언트가 이전 상태를 유지하지 않음
쿠키(Cookie)
클라이언트(브라우저)가 Key-Value쌍으로 로콜에 저장되는 데이터 파일
유효시간 내에서 블라우저가 종료되어도 계속 유지
사용자가 따로 작업을 하지 않아도 브라우저가 쿠키를 request header에 담아 서버에 전송
세션
기본적으로 쿠키를 이용하여 구현
클라이언트를 구분하기 위해 각 클라이언트에게 session ID를 부여하고 클라이언트 쿠키에 session ID를 저장한다.
세션은 서버측에 저장하여 관리 되기 때문에 보안은 좋지만 서버에 과부하를 줄 수 있다.
쿠키 | 세션 | |
---|---|---|
저장 공간 | 클라이언트(브라우저) | 서버 |
보안성 | 낮음 | 높음 |
특징 | 브라우저가 종료되어도 유지 | 서버용량에 따라 저장 가능->서버 과부화 |
사용 예시 | 장바구니, 자동로그인, 팝업체크 |
쿠키와 세션을 통한 인증과 인가
클라이언트가 로그인을 하면 서버는 회원정보를 대조하여 인증을 한다.(인증)
회원 정보를 세션저장소에 생성하고 session ID를 발급
http response header 쿠키에 발급한 session ID를 담아서 보낸다.
클라이언트에서 session ID를 쿠키 저장소에 저장하고, 이후 http request를 보낼 때마다 쿠키에 session ID를 담아서 보낸다.
서버에서 쿠키에 담겨져온 session ID에 해당하는 회원 정보를 세션 저장소에서 가져옴
(인가)
응답 메시지에 회원 정보를 바탕으로 처리된 데이터를 담아서 클라이언트에 보냄
단점
Load Balancing
서버가 처리해야할 요청(Load)을 여러대의 서버로 나누어(Balancing) 처리하는 기법
서버 효율성 관리 및 확장이 어려움