쿠키 (Cookie)
- 정의: 웹 브라우저에 저장되는 작은 데이터 조각.
- 사용 예시: 사용자의 로그인 정보를 기억해서 다시 로그인할 필요가 없게 하거나, + 장바구니에 담긴 상품 정보를 유지.
- 특징:
+ 클라이언트 측에 저장됨.
+ 서버가 쿠키를 설정하고 클라이언트(브라우저)가 이를 저장.
+ 다음 요청 때 브라우저가 자동으로 서버에 전송.
세션 (Session)
- 정의: 서버에 저장되는 사용자 상태 정보.
- 사용 예시: 사용자가 로그인한 상태를 유지하고, 개인화된 사용자 경험 제공.
- 특징:
+ 서버 측에 저장됨.
+ 서버가 사용자별로 고유한 세션 ID를 생성하고 이를 클라이언트에 전달.
+ 클라이언트는 이 세션 ID를 쿠키에 저장하고, 요청할 때마다 이를 서버에 전달.
토큰 (Token)
- 정의: 인증 및 권한 부여에 사용되는 자격 증명 정보.
- 사용 예시: API 호출 시 클라이언트가 서버에 자신을 인증하기 위해 사용.
- 특징:
+ 클라이언트 측에 저장됨.
+ 서버가 발급한 토큰을 클라이언트가 저장하고, 요청할 때마다 이를 서버에 전송.
+ 토큰은 일반적으로 짧은 시간 동안만 유효.
JWT (JSON Web Token)
- 정의: JSON 형식으로 데이터를 저장한 토큰, 주로 인증에 사용.
- 사용 예시: 사용자가 로그인할 때 발급받은 토큰을 통해 API에 접근 권한을 검증.
- 특징:
+ 클라이언트 측에 저장됨.
+ 자체적으로 데이터와 서명을 포함하고 있어, 서버에서 별도의 세션 저장이 필요 없음.
+ 헤더, 페이로드, 서명 세 부분으로 구성:
+ 헤더: 토큰의 타입과 알고리즘 정보.
+ 페이로드: 사용자 정보와 추가 데이터.
+ 서명: 토큰의 무결성을 검증하는 서명.
요약
- 쿠키: 클라이언트 브라우저에 저장되는 데이터, 주로 사용자 상태 정보나 설정 유지.
- 세션: 서버에 저장되는 사용자 상태 정보, 클라이언트는 세션 ID를 통해 접근.
- 토큰: 인증 및 권한 부여를 위해 사용되는 자격 증명, 주로 API 호출 시 사용.
- JWT: JSON 형식의 토큰, 자체적으로 정보와 서명을 포함하여 서버에 세션을 저장할 필요 없이 인증 가능.