我有一个包含以下 header 的令牌eyJraWQiOiI4NkQ4OEtmIiwiYWxnIjoiUlMyNTYifQ。
如何获得jwt.io提供的以下 JSON 解码?
{
"kid": "86D88Kf",
"alg": "RS256"
}
Run Code Online (Sandbox Code Playgroud)
jwt.decode()没有给出这个标题。
谢谢!
jps*_*jps 13
在 PyJwt 中用于get_unverified_header(token)此目的。kid这对于在验证令牌之前获取密钥 id () 特别有用。因此,在最后一行中,我展示了如何kid从标头中提取 。
import jwt
token = "eyJraWQiOiI4NkQ4OEtmIiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"
header = jwt.get_unverified_header(token)
print (header)
print (header['kid'])
Run Code Online (Sandbox Code Playgroud)
结果:
{'孩子':'86D88Kf','alg':'RS256'}
86D88Kf
tde*_*ney 12
这是一个未加密的标头。它是您想要的数据的 JSON 编码的 URL 安全 base64 编码。您需要在编码字符串的末尾添加填充字符,以确保其位于 4 个字符的边界上,然后进行解码。
>>> import json
>>> import base64
>>> token = "eyJraWQiOiI4NkQ4OEtmIiwiYWxnIjoiUlMyNTYifQ"
>>> padded = token + "="*divmod(len(token),4)[1]
>>> padded
'eyJraWQiOiI4NkQ4OEtmIiwiYWxnIjoiUlMyNTYifQ=='
>>> jsondata = base64.urlsafe_b64decode(padded)
>>> jsondata
b'{"kid":"86D88Kf","alg":"RS256"}'
>>> data = json.loads(jsondata)
>>> data
{'kid': '86D88Kf', 'alg': 'RS256'}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13474 次 |
| 最近记录: |