쿠키, 세션, 토큰 차이

쿠키

  • 브라우저에 저장
  • 웹사이트를 방문해 사용언어를 선택한다면, 다음 방문 때 쿠키에 저장된 언어를 서버로 보내서 해당 언어에 해당하는 response를 보내온다.

stateless

  • 서버로 가는 모든 요청이 이전 리퀘스트와 독립적으로 다뤄진다는 뜻
  • 요청이 끝나면 서버는 그 요청을 잊기 때문에 매번 보내줘야 한다.
  • 이때 사용하는 것이 세션

세션

  • ID/PW를 확인하여 올바를 경우 세션DB에 유저 생성. 생성된 세션은 고유의 세션ID가 있어 쿠키를 통해 브라우저에 저장됨
  • 그 세션 ID가 요청마다 서버로 전달되고 이것을 통해 매 요청마다 서버는 내가 누군지 알게됨.
  • 유저가 가지고 있는 것은 세션ID 뿐
  • 쿠키는 세션ID를 전달하기 위한 매개체일 뿐
  • 쿠키는 브라우저에만 있기 때문에 네이티브 앱에서는 사용불가, 그래서 사용하는 것이 토큰

토큰

  • JWT(Json Web Token)
  • 서버에 세션 DB가 필요없어짐
  • ID/PW를 확인하여 올바를 경우 어떠한 처리를 통해 무작위 문자열을 만들어내고 이를 클라이언트에게 return함
  • 요청시에 이 토큰을 서버에 보내고 서버는 해당 사인이 유효한지 체크
  • JWT는 암호화 된 것이 아님. 누구나 열어서 볼 수 있다.

links

social