Session(세션)

김재민·2021년 8월 8일
0

session(세션)

한번쯤 웹페이지를 사용하면서 이런 경고창 혹은 문구를 본적이 있을 것이다. 그렇다면 세션이란 도대체 무엇일까?

세션은 클라이언트와 웹서버 간 네트워크 연결이 지속 유지되고 있는 상태를 말한다. 즉 사용자가 브라우저를 열어 서버에 접속한 뒤 접속을 종료할 때 시점 까지를 말한다.
HTTP 프로토콜은 비접속형 프로토콜이므로, 매 접속시마다 새로운 네트워크 연결이 이루어지는데, 세션이 연결 유지를 가능하게 해준다.

세션기반 인증과정(Session-based Authentication

사용자가 웹사이트에서 아이디 및 비밀번호를 이용해서 로그인을 시도하면 어떤 과정을 거치게 될까?

1. 아이디 / 비밀번호를 입력하고 로그인에 성공한다.
👉 사용자가 인증에 성공한 상태는 세션이라고 부른다.

2. 인증에 성공한 세션을 서버는 일종의 저장소에 저장한다.
👉 in-memory(자바스크립트 객체처럼) or 세션스토어에 저장

3.세션이 만들어지면 각 세션을 구분할 수있는 세션 아이디가 만들어진다.
👉 이때 사용자에 세션을 성공을 증명할 수단으로 세션 아이디를
전달한다.

4. 이때!! 웹사이트에서 로그인을 유지하기 위한 수단으로 쿠키를 사용하는데 쿠키에 서버에서 발급한 세션아이디를 저장한다.
👉 쿠키를 통해 유효한 세션아이디가 서버에 전달되고 세션 스토어에 해당세션이 존재한다면 서버는 요청 접근이 가능하다고 판단을 한다.


로그아웃

로그아웃의 경우

세션 아이디가 담긴 쿠키는 클라이언트에 저장되어있고,
서버는 세션을 저장하고있다.

  • 👨‍💻 클라이언트 { 🍪 쿠키 { 🔑세션아이디 }}

  • 🗄서버 { 🔑세션 }

    	이해를 돕기위해 위와 같이 표현해 봤습니다.       

서버는 그저 세션아이디로만 요청을 판단한다.

서버가 클라이언트의 쿠키를 임의로 삭제할 수 없다. 대신 set-cookie로 세션 아이디의 키값을 무효한 값으로 갱신해야 한다.

profile
Junior Front-end engineer

0개의 댓글