python 解码 jwt
import base64
import jsondef base64url_decode(base64url_data):# 将URL安全的base64编码数据转换为标准的base64编码数据base64_data = base64url_data.replace('-', '+').replace('_', '/')# 如果数据长度不是4的倍数,则补齐padding_length = 4 - len(base64_data) % 4base64_data += "=" * padding_length# 解码base64数据decoded_data = base64.b64decode(base64_data)return decoded_datadef decode_jwt(jwt):# JWT由三部分组成:header.payload.signature,每部分之间用点号分隔header, payload, signature = jwt.split('.')# 解码header和payloaddecoded_header = json.loads(base64url_decode(header).decode('utf-8'))decoded_payload = json.loads(base64url_decode(payload).decode('utf-8'))# signature部分不需要解码return decoded_header, decoded_payload, signature# 示例JWT(仅作为示例,实际JWT应由服务器生成)
example_jwt = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"decoded_header, decoded_payload, signature = decode_jwt(example_jwt)print("Decoded header:", decoded_header)
print("Decoded payload:", decoded_payload)
print("Signature:", signature)
参考:
https://cloud.tencent.com/developer/information/%E5%9C%A8python%E4%B8%AD%E8%A7%A3%E7%A0%81JWT%EF%BC%8C%E6%97%A0%E9%9C%80%E5%AE%89%E8%A3%85%E9%A2%9D%E5%A4%96%E7%9A%84%E8%BD%AF%E4%BB%B6%E5%8C%85