Cookie vs Sesion vs JWT

Kyuuu_ul·2023년 12월 18일

Cs

목록 보기
1/1

http Protocolstateless 한 특징을 가지고 있다. 로그인을 한다면 누가 로그인 중인지 기억하기 위해 쿠키,세션,토큰 등을 사용한다.

cookie

웹에 접속할 때 생성되는 정보를 담고 있는 임시 파일이다. 서버를 대신해 사용자의 웹 브라우저에 정보를 저장한다.

sesion

쿠키와 반대로 웹 브라우저가 아닌 서버의 메모리에 세션 ID를 저장한다.

JWT

Json format으로 사용자에 대한 정보를 저장할 수 있는 웹토큰. 서버에서 클라이언트에게 인증이 되면 토큰을 부여한다.

Cookie & Session vs JWT

Cookie & Session

  1. 사용자가 서버에 로그인을 요청한다.

  2. 서버에서 사용자를 확인한 후 사용자의 고유한 Id를 부여하여 세션 저장소에 저장한 후 이와 연결된 세션Id를 발급한다.

  3. 사용자는 서버에서 해당 세션Id를 받아 쿠키에 저장한 후, 인증이 필요한 요청마다 쿠키를 헤더에 실어 보낸다.

  4. 서버는 쿠키를 받아 세션 저장소에서 대조 후 대응되는 정보를 가져온다.

  5. 인증이 완료되면 서버는 사용자에 맞는 데이터를 보내준다.

장점

  • 서버쪽에서 Session 통제가 가능하다.
  • 네트워크 부하가 낮다.

단점

  • 서버에서 세션 저장소를 사용하기에 요청이 많아지는 경우 서버에 부하가 심해진다.

JWT

  1. 사용자가 서버에 로그인을 요청한다.

  2. 서버측에서 사용자에게 유일한 토큰을 발급한다.

  3. 클라이언트는 서버측에서 전달받은 토큰을 쿠키나 스토리지에 저장해두고, 서버에 요청을 할 때마다 해당 토큰을 HTTP요청 헤더에 포함시켜 전달한다.

  4. 서버는 전달받은 토큰을 검증하고 요청에 응답한다. 토큰에는 요청한 사람의 정보가 담겨있어서 서버는 DB를 조회하지않고 누가 요청했는지 알 수 있다.

장점

  • hearder와 payload를 지니기에 데이터 위변조 막을수있다.
  • 별도의 저장소가 필요하지 않다.

단점

  • 요청이 많아지면 토큰의 길이가 길기에 네트워크 부하가 심해진다.
  • 토큰 탈취시 대응이 어렵다.

0개의 댓글