쿠키
- 키와 값으로 저장되어 있음
- 브라우저에 데이터 저장
- 쿠키는 유효 기간이 있음
- 쿠키가 없다면 페이지를 이동할 때 로그인 정보를 저장할 곳이 없다. 일시적으로 가벼운 데이터를 저장하기 위
- httpOnly, secure 옵션 등을 부여하면 코드(JS)로 접근 불가
- 저장 용량은 로컬 스토리지에 비하면 현저히 작음
세션
- 서버에서 데이터 관리
- 브라우저에서는 session Id로 서버에 접근
- session Id는 쿠키에 저장
- 세션 사용 예시 = 넷플릭스
- Session Id로 접근해서 서버와 통신
- 다른 클라이언트에서 같은 Session Id로 접근하면 서버와의 통신을 끊는다.
- 최대 몇 개의 클라이언트의 Session Id로 접근할 수 있는지 제한할 수도 있다. (예를 들어 넷플릭스 패밀리 4명)
웹 스토리지
쿠키만으로는 저장용량이 작음
- 로컬 스토리지
- 브라우저를 종료해도 유지되는 데이터 저장소
- 세션 스토리지
- 브라우저 세션이 유지되는 동안에만 유지되는 데이터 저장소
JWT(Json Web Token)
- header, payload, signature(서명) 으로 이루어져있음
- header에 어떤 알고리즘으로 암호화 할 것인지 적혀있음
- 어느 서버나 secret key만 가지고 있다면 jwt를 인증할 수 있음
- 그래서 스케일 아웃된 여러 서버에서 다른 서버로 jwt의 인증 요청을 할 때 동일한 secret key가 있다면 어느 서버에서든 인증이 가능하다.
- 인증과 인가의 차이
- 인증 = 이 요청은 "신옹심"이다.
- 인가 = 접근권한