기술 면접 준비

쿠키, 세션, 웹 스토리지(로컬,세션 스토리지)에 관하여..jwt는 어디에 저장하나?

jinsang-2 2024. 12. 17. 23:57

쿠키

  • 키와 값으로 저장되어 있음
  • 브라우저에 데이터 저장
  • 쿠키는 유효 기간이 있음
  • 쿠키가 없다면 페이지를 이동할 때 로그인 정보를 저장할 곳이 없다. 일시적으로 가벼운 데이터를 저장하기 위
  • 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가 있다면 어느 서버에서든 인증이 가능하다. 
    • 인증과 인가의 차이
      • 인증 = 이 요청은 "신옹심"이다. 
      • 인가 = 접근권한 
  •