使用 PyJWT 的 Jwt 解码引发签名验证失败
Posted
技术标签:
【中文标题】使用 PyJWT 的 Jwt 解码引发签名验证失败【英文标题】:Jwt Decode using PyJWT raises Signature verification failed 【发布时间】:2018-03-19 11:09:53 【问题描述】:我在 django 视图中解码 jwt 令牌时遇到了一个奇怪的问题。如果我尝试 jwt.decode('encoded_token', 'secret') 那么我会看到“签名验证失败”消息。为了逃避这个问题,我将验证标志设置为 False:
jwt.decode('eroded_token', 'secret', verify=False)
这使解码的有效负载没有错误,但我试图弄清楚如何在不将验证标志设置为 False 的情况下成功验证令牌。有什么想法吗?
谢谢
【问题讨论】:
【参考方案1】:这不是您要验证的实际 JWT 令牌 - 它应该看起来更像这样 - 三个字符串与句点连接在一起(当然也可以创建为实际的 JSON Web 令牌):
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE1NTk1ODM2MjAsImV4cCI6MTU1OTU4MzY4MH0.P9bO39jqwB3YHf7XSo16OSLvcNMYbm__hrf70J9VzYw
您可以通过以下方式创建网络令牌:
import jwt
encoded = jwt.encode('some': 'payload', 'secret', algorithm='HS256')
print(encoded)
O/P:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzb21lIjoicGF5bG9hZCJ9.4twFt5NiznN84AWoo1d7KO1T_yoc0Z6XOpOVswacPZg
`
取自https://github.com/jpadilla/pyjwt
【讨论】:
以上是关于使用 PyJWT 的 Jwt 解码引发签名验证失败的主要内容,如果未能解决你的问题,请参考以下文章
如何使用带有公共 PEM 证书的 python PyJWT 验证 JWT?