python 解码 jwt

cpp 复制代码
import base64
import json

def base64url_decode(base64url_data):
    # 将URL安全的base64编码数据转换为标准的base64编码数据
    base64_data = base64url_data.replace('-', '+').replace('_', '/')
    # 如果数据长度不是4的倍数,则补齐
    padding_length = 4 - len(base64_data) % 4
    base64_data += "=" * padding_length
    # 解码base64数据
    decoded_data = base64.b64decode(base64_data)
    return decoded_data

def decode_jwt(jwt):
    # JWT由三部分组成:header.payload.signature,每部分之间用点号分隔
    header, payload, signature = jwt.split('.')
    # 解码header和payload
    decoded_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/在python中解码JWT,无需安装额外的软件包