Python
JWT

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'}

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'}