如何使用Python在没有秘密的情况下解码JWT令牌

问题描述 投票:0回答:1

当我访问 https://jwt.io/ 时,我能够在没有任何秘密的情况下解码我的令牌。我只需粘贴令牌,它就会被解码。

但是当我转到我的代码并尝试在没有秘密的情况下对其进行解码时,我会收到以下错误:

jwt.exceptions.InvalidSignatureError: Signature verification failed

这是我的代码:

import jwt

token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJtZXNzYWdlIjoidGhpcyBpcyBhIHNlY3JldCBtZXNzYWdlIiwiaWF0IjoxNjc4MjE1ODY1fQ.jrNYdkoNau5H20CGXlHK5nASGxY7xLD8LF6zxt-thLY'

decoded = jwt.decode(token, verify_signature=False, algorithms=['HS256'])

print(decoded)

顺便说一句,这样就可以了

decoded = jwt.decode(token, 'secret', verify_signature=False, algorithms=['HS256'])

这也会失败

decoded = jwt.decode(token, 'secret', verify=False, algorithms=['HS256'])

有没有一种方法可以像https://jwt.io那样在没有秘密的情况下对其进行解码?

python jwt decode
1个回答
0
投票

尝试将这三个参数传递给 jwt.decode,如下所示。这对我有用。

import jwt

token = <YourToken>
decoded_token=jwt.decode(token,algorithms='HS256'],options='verify_signature':False})
© www.soinside.com 2019 - 2024. All rights reserved.