当我访问 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那样在没有秘密的情况下对其进行解码?
尝试将这三个参数传递给 jwt.decode,如下所示。这对我有用。
import jwt
token = <YourToken>
decoded_token=jwt.decode(token,algorithms='HS256'],options='verify_signature':False})