jwtの中身を見る
jwtの文字列は https://jwt.io/ から拝借しました。
ライブラリを利用する場合は PyJWT をどうぞ。
※ライブラリを利用しないケースは、署名の検証はしていません。
import base64
import json
jwt_ = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ'
tmp = jwt_.split('.')
header = json.loads(base64.b64decode(tmp[0]).decode())
payload = json.loads(base64.b64decode(tmp[1]).decode())
# >>> header
# {'alg': 'HS256', 'typ': 'JWT'}
# >>> payload
# {'name': 'John Doe', 'admin': True, 'sub': '1234567890'}
以下、PyJWTを利用したケース。
署名はHS256で、シークレット値="secret"です。
# pip install PyJWT
import jwt
jwt.decode(jwt_, verify=False)
# {'sub': '1234567890', 'admin': True, 'name': 'John Doe'}
# PyJWTライブラリのバージョンが新しい(2.0.1で確認)場合、上記はエラーになるので、以下のように書きます。
jwt.decode(jwt_, options={"verify_signature": False})
jwt.decode(jwt_, 'secret', algorithms=['HS256'])
# {'sub': '1234567890', 'admin': True, 'name': 'John Doe'}
jwt.decode(jwt_, 'fuga', algorithms=['HS256'])
# ...
# raise DecodeError('Signature verification failed')
# jwt.exceptions.DecodeError: Signature verification failed
作成と検証
>>> header
{'alg': 'HS256', 'typ': 'JWT'}
>>> payload
{'sub': '1234567890', 'admin': True, 'name': 'John Doe'}
>>> result = jwt.encode(payload, 'secret', algorithm='HS256', headers=header)
>>> result
b'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwiYWRtaW4iOnRydWUsIm5hbWUiOiJKb2huIERvZSJ9.9IELajTU43KKXdIpYMyiS0ARBsngz3EiLAT-3tZGDLY'
>>> jwt.decode(result, 'secret', algorithms=['HS256'])
{'sub': '1234567890', 'admin': True, 'name': 'John Doe'}
Author And Source
この問題について(jwtの中身を見る), 我々は、より多くの情報をここで見つけました https://qiita.com/leo1109/items/2e82c899891f8e771315著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .