JWT
토큰은 JSON Web Token
의 약자로 전자 서명된 URL-safe
의 JSON
입니다. JWT
의 대부분의 프로그래밍 언어에서 사용되면서 자기 수용적이라는 특징이 있습니다. 자기 수용적인 JWT
는 시스템에서 발급된 토큰이 토큰에 대한 기본정보, 전달할 내용, 그리고 토큰이 검증됐다는 것을 증명해주는 signature
이 있습니다. .
JWT
는 .
을 구분으로 3가지 영역으로 되어있습니다.
Header
에는 alg
와 typ
가 들어있습니다. typ
는 타입으로 JWT
가 타입이고, alg
에는 알고리즘으 들어가게 됩니다.
Payload
는 토큰에 담을 내용이 담겨있습니다. 그 내용은 여러개의 claim
으로 이루어져 있습니다. 이 claim
은 name
:value
쌍으로 되어있으며 그 종류로는 세가지가 있습니다.
registered claim
: 토큰에 대한 정보를 담기 위해 이미 정해진 claim
public claim
: 충돌을 방지하기 위한 이름을 가지고 있는다.private claim
: 등록되있지도, 공개되지도 않은 claim
Siganture
는 secret Key
를 포함하여 암호화되어있습니다. Header
의 인코딩값과 Payload
의 인코딩값을 합친후 비밀키로 해쉬한다.
Python
에서 JWT
를 사용하기 위해서는 PyJWT
패키지를 설치해야합니다.
pip install PyJWT
import jwt
PyJWT
를 임포트할 때는 jwt
로 가져옵니다.
jwt
로 이제 사용자에게 줄 Token
을 만들 수 있습니다.
token = jwt.encode({"user_id":user_id},SECRET,algorithm="HS256")
만들어진 token
을 JsonResponse
로 프런트엔드에게 줄 수 있습니다. 이렇게 보내진 token
은 로컬 스토리지나 세션 스토리지 또는 쿠키에 저장됩니다.