JWT 개념
JWT(Json Web Token) 알아가기
쿠키(Cookie)와 세션(Session)
- ID, PW 정보 포함한 쿠키 교환 (클라이언트 저장)
- 장점 - 서버 stateless
- 단점 - HTTP 패킷에 ID, PW 등 개인정보 포함
- 세션ID를 포함한 쿠키 교환 (클라이언트, 서버 저장)
- 장점 - HTTP 패킷에 ID, PW 등 개인정보 미포함. 세션ID만 포함. 세션ID를 서버에서 지움으로써 탈취 대응.
- 단점 - 서버에 세션ID가 저장되어 stateful. Scale Out 시에 세션 저장소도 늘려야
- 토큰 교환 (클라이언트 저장) - 로그인 시 서버에서 생성하여 클라이언트에 전달. 서버는 개인키 보유
<aside>
💡 JWT는 토큰 교환 방식 인증에 사용되는 ‘토큰’의 종류(프로토콜) 중 하나이다.
</aside>
서버에서는 로그인 한 클라이언트에게 토큰(JWT)를 발급해준다.
클라이언트는 인증이 필요한 서버의 서비스에 요청할 때마다 토큰을 함께 전송한다.
토큰은 클라이언트의 로컬 저장소 혹은 쿠키에 저장된다.
토큰 교환 매개체는 쿠키 혹은 HTTP 헤더이다.
쿠키, 세션 그리고 JWT
JWT 구조
서버에서 개인키로 토큰 생성 후 클라이언트에 전달, 클라이언트가 서버에 토큰 전달 시 서버는 개인키로 토큰 인증
[JWT] 토큰(Token) 기반 인증에 대한 소개
[JWT] JSON Web Token 소개 및 구조
JWT in Django