세션 vs 토큰 vs 쿠키? 기초개념 잡아드림. 10분 순삭!
위의 동영상을 보고 정리한 내용입니다.
쿠키
- 쿠키를 이용해 서버는 내 브라우저에 데이터를 넣을 수 있음(나에 대한 것 기억)
- 도메인에 따라 제한. 유효기간 있음.
세션 & 토큰
- stateless : 서버로 가는 모든 요청이 이전 request와 독립적으로 다뤄짐. 메모리가 없음. 요청 때 마다 알려줘야 함.
- 쿠키가 없는 ios, android 의 경우 토큰을 사용
- 세션 : 현재 로그인한 유저들의 모든 세션 ID를 DB에 저장해야 함.
즉, 요청이 들어올 때 마다 DB를 찾아야 함 = 유저가 늘어남에 따라 DB 리소스가 필요. -> 보통 빠르고 저렴한 Redis를 많이 이용함.
JWT
- 토큰 형식. 세션 DB 가질 필요 없음.
- DB를 건드리지 않고 요청이 들어오면 정보를 사인하고 다시 전달함
- 이후에 다시 토큰 or 사인된 정보를 서버에 전달하면 해당 토큰이 유효한지 확인 후 유저로 인증
- 암호화 되지 않으므로 비밀 정보를 JWT에 두면 안됨.
- 제약이 많음. 강제 로그아웃 등의 기능 안됨.
- 서비스가 더 커지면 세션이 더 나음. (유저 관리에 더 유리)