【问题标题】:Getting only decoded payload from JWT in python在 python 中仅从 JWT 获取解码的有效负载
【发布时间】:2020-04-12 23:05:29
【问题描述】:

有没有一种很好的方法(可能使用一些库)从 JWT 中获取有效负载并保存为字符串变量? 除了手动解析第一个和第二个点之间的内容然后解码。

【问题讨论】:

  • 做出选择:jwt.io/#libraries-io
  • 这就是我正在努力解决的问题。所有这些库都提供了全面的方法。我想要的只是轻松获得一个不错的有效负载主体,就像 jwt.io 允许我在将 JWT 粘贴到他们的工具后所做的那样。

标签: python jwt


【解决方案1】:

PyJWT 有一个decode a JWT without verification 的选项:

如果没有此选项,decode 函数不仅会解码令牌,还会验证签名,您必须提供匹配的密钥。这当然是推荐的方式。
但是,如果您出于某种原因只想解码负​​载,请将选项 verify_signature 设置为 false。

import jwt
key='super-secret'
payload={"id":"1","email":"myemail@gmail.com" }
token = jwt.encode(payload, key)
print (token)
decoded = jwt.decode(token, options={"verify_signature": False}) # works in PyJWT >= v2.0
print (decoded)
print (decoded["email"])

对于 PyJWT

decoded = jwt.decode(token, verify=False)  # works in PyJWT < v2.0

它返回一个字典,以便您可以单独访问每个值:

b'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6IjEiLCJlbWFpbCI6Im15ZW1haWxAZ21haWwuY29tIn0.ljEqGNGyR36s21NkSf3nv_II-Ed6fNv_xZL6EdbqPvw'

{'id': '1', 'email': 'myemail@gmail.com'}

myemail@gmail.com

注意:还有其他 JWT libs for python,这也可能与其他库一起使用。

【讨论】:

  • 如果我也想拥有标题怎么办?
  • 这是怎么做的:jwt.get_unverified_header(token)
猜你喜欢
  • 2020-09-18
  • 2018-08-06
  • 2017-05-31
  • 2020-04-26
  • 2017-01-06
  • 2021-08-26
  • 2018-03-17
  • 2016-05-29
  • 2018-09-15
相关资源
最近更新 更多