JWT(Json Web Token)는 회원 로그인이 완료 되었을때 발행되는 토큰
JWT에는 암호화 된 회원정보가 들어있으며 복호화를 통해 사이트내의 서비스를 사용할 수 있는지 확인(인가 : Authorizationathon)하는데 사용
JWT는 헤더(header), 정보(payload), 서명(signature) 구조로 이루어져 있음
typ
과 alg
이 들어있음typ
은 타입으로 JWT가 타입이고, alg
에는 algorithm이 들어가게 됨claim
으로 이루어짐 name:value
쌍으로 되어있으며 그 종류로는 세가지가 있음Secret Key
를 포함하여 암호화되어있음conda create -n auth python=3.9
conda activate auth
pip install pyjwt
python
import jwt
JWT를 사용할 때는 SECRET_KEY(절대 공개되면 안되는 값)과 ALGORITHM이 필요
# my_settings.py
SECRET_KEY = 'SECRET'
ALGORITHM = 'HS256'
Tip! SECRET_KEY와 ALGORITHM은 분리된 파일에 보관하여 Import하여 사용
(시크릿키는 필수! 알고리즘은 선택)
SECRET_KEY가 담긴 파일은 꼭 .gitignore에 포함하여 git에 업로드 되지 않도록 주의
>>> import jwt
>>> encoded_jwt = jwt.encode({"some": "payload"}, "secret", algorithm="HS256")
>>> encoded_jwt
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzb21lIjoicGF5bG9hZCJ9.Joh1R2dYzkRvDkqv3sygm5YyK8Gi4ShZqbhK2gxcs2U
>>> jwt.decode(encoded_jwt, "secret", algorithms=["HS256"])
{'some': 'payload'}
>>> import jwt
>>> SECRET = 'secret'
>>> access_token = jwt.encode({'id': 1}, SECRET, algorithm = 'HS256')
>>> access_token
'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MX0.-xXA0iKB4mVNvWLYFtt2xNiYkFpObF54J9lj2RwduAI'