import json
import base64
def base64url_decode(base64_str):
size = len(base64_str) % 4
if size == 2:
base64_str += '=='
elif size == 3:
base64_str += '='
elif size != 0:
raise ValueError('Invalid base64 string')
return base64.urlsafe_b64decode(base64_str.encode('utf-8'))
def parse_jwt(jwt_token):
jwt_token_list = jwt_token.split('.')
header = base64url_decode(jwt_token_list[0]).decode()
payload = base64url_decode(jwt_token_list[1]).decode()
return {
'header': json.loads(header),
'payload': json.loads(payload),
'signature': jwt_token_list[-1]
}
if __name__ == '__main__':
token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoicmVmcmVzaCIsImV4cCI6MTY2NTE5NjAxNCwiaWF0IjoxNjY1MTA5NjE0LCJqdGkiOiI2MWI1M2RhYmZhMDA0N2JlOTcyZGJiOWVlNjkzYmYzNyIsInVzZXJfaWQiOjF9.Q2RtNXVvo5GWdwJplXVbOSvQpggrVkVJDkkrIw1R1JY'
print(parse_jwt(token))
# {'header': {'typ': 'JWT', 'alg': 'HS256'}, 'payload': {'token_type': 'refresh', 'exp': 1665196014, 'iat': 1665109614, 'jti': '61b53dabfa0047be972dbb9ee693bf37', 'user_id': 1}, 'signature': 'Q2RtNXVvo5GWdwJplXVbOSvQpggrVkVJDkkrIw1R1JY'}
【Python】jwt解码
于 2022-10-07 10:45:05 首次发布