[CS] 세션, 토큰, 쿠키, JWT

일단 해볼게·2022년 11월 16일
0

CS

목록 보기
2/10
post-thumbnail

3줄 요약

쿠키 = 옮기는 시스템, 매개체

세션 = 서버가 기억하는 이상하게 생긴 텍스트

JWT = 정보를 갖고 있는 토큰. DB 없이 검증 가능


쿠키

  • 서버는 클라이언트에 대한 정보를 기억하기 위해 클라이언트에게 데이터를 넣는다.
  • 서버가 정한 유효기간이 존재
  • 쿠키는 도메인에 따라 제한된다. ex) 유튜브에 방문해서 얻은 쿠키는 유튜브에만 보내지게 된다.
  • 동작 과정
    1. 서버가 브라우저에 쿠키를 주고 브라우저는 쿠키를 저장한다.
    2. 다시 브라우저에 방문하면 브라우저는 서버에 쿠키를 준다.
    3. 서버는 쿠키 속 내용을 확인하고 내용에 맞는 response를 준다.
  • 브라우저에만 쿠키가 있어 안드로이드, IOS에는 사용할 수 없다.

세션

  • 동작 과정
    • 서버는 세션 DB에 데이터를 저장한다. → 세션 ID에 따라 저장
    • 쿠키를 통해 브라우저로 돌아오고 저장된다.
    • 브라우저가 요청을 보낼 때 쿠키속에 있는 세션 ID를 가지고 세션 DB를 확인한다. → 서버가 요청한 브라우저가 누군지 인식한다.
  • 브라우저 정보는 서버에 있고 브라우저는 세션 ID만 갖고있다.
  • 세션을 이용해 안드로이드, IOS 앱 사용 가능하다.
  • 현재 로그인한 유저들의 모든 세션 아이디를 DB에 저장해야한다. → 사용자가 늘어나면 DB 리소스가 많이 필요하다.

토큰

  • 서버에 토큰을 보내고 검증 후 서버는 세션 DB에서 해당 토큰과 일치하는 브라우저를 찾는다.

JWT 토큰

  • 브라우저의 JWT 토큰의 유효 여부만 검사한다.
  • 세션 DB 필요가 없다.
  • 암호화되지 않다.

세션 vs JWT 토큰

세션JWT 토큰
특정 사용자를 쫓아내고 싶다면?세션을 삭제하면 된다.JWT 토큰의 유효기간이 지나지 않으면 특정 사용자를 쫓아내지 못한다.
사용자가 많아진다면?세션 정보를 저장하는 DB를 늘려야한다. → Redis 주로 사용생성된 토큰을 추적하지 않고 유효 여부만 검사하기 때문에 DB를 따로 살 필요가 없다.

규모가 크고 사용자를 잘 관리하고 싶다면 세션

규모가 작고 사용자 정보를 저장할 필요가 없다면 JWT 토큰


참고

https://www.youtube.com/watch?v=tosLBcAX1vk

profile
시도하고 More Do하는 백엔드 개발자입니다.

1개의 댓글

comment-user-thumbnail
2022년 12월 4일

3줄 요악 너무 좋아요!! 역시 정리 잘하시네요 잘 보고 갑니다

답글 달기