Q. 왜 쿠키 / 세션 / 토큰이 필요한가..?
HTTP는 무상태성(stateless)이다. 서버로 가는 모든 요청이 이전 작업과 독립적으로 다뤄지기 때문에 요청할 때마다 우리가 누구인지 알려줘야 한다.
쿠키
쿠키를 이용해서 서버는 브라우저에 데이터를 넣을 수 있는 시스템
즉, 서버와 클라이언트 사이의 매개체
작동방식
- 웹사이트에 방문할 때 서버에 요청을 보낸다.
- 서버는 응답을 하는데 이 응답에는 브라우저가 저장하고자 하는 쿠키가 담겨있다.
- 브라우저에 쿠키를 저장한다.
- 해당 웹사이트를 방문할 때마다 브라우저는 서버에 요청과 함께 해당 쿠키도 전송한다.
- 서버는 쿠키를 통해 사용자가 누군지 식별한다.
세션
클라이언트와 서버 간 연결이 활성화된 상태로, 쿠키와 마찬가지로 로그인과 같은 사용자 인증을 할때 주로 사용
쿠키는 클라이언트 쪽 정보를 저장하는 반면, 세션은 서버 쪽 정보를 저장한다.
쿠키 & 세션 인증 방식
쿠키 & 세션 인증 방식의 문제점
- 유저가 증가할수록 세션DB에 저장해야 할 데이터가 많아져 저장공간이 많이 필요하고 당연히 서버 부하도 생긴다.
토큰(JWT)
세션 DB를 갖지 않아도 되므로 서버는 유저 인증한다고 많은 일을 하지 않아도 된다
토큰 작동방식
- 유저는 id와 pw를 서버에 전송하면 서버는 해당 정보가 일치한다면 AccessToken을 string으로 된 값으로 전송한다.
- 이후 웹사이트 방문 시 해당 토큰을 요청할 때마다 서버에 보내야하고 서버는 DB를 거치지 않고 해당 토큰이 유효한 지 검증한다
참고
https://www.youtube.com/watch?v=tosLBcAX1vk
https://dsc-sookmyung.tistory.com/313
https://jwt.io/
글 잘 봤습니다.