我收到了由使用jjwt模块的java程序创建的JWT令牌。 现在,当我尝试使用pyjwt验证令牌时,它会抛出异常。在python中转换由Java JWT创建的JWT令牌
import jwt token
token='eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMDAiLCJyb2xlcyI6IkJVU0lORVNTVVNFUiIsIm1vZGUiOiJzdG9yZWFwcCIsImlhdCI6MTQ5NDg1ODk4MCwiZXhwIjoxNDk0ODY0OTgwfQ.ckFnGv1NT-Ui2S90DNr50YoHSXc1ZLBNnEErnGMWL-E'
secret ='123456AB'
jwt.decode(token,secret,algorithms='HS256')
Traceback (most recent call last): File "", line 1, in File "/Applications/anaconda/envs/modulename/lib/python3.5/site-packages/jwt/api_jwt.py", line 64, in decode options, **kwargs) File "/Applications/anaconda/envs/modulename/lib/python3.5/site-packages/jwt/api_jws.py", line 116, in decode key, algorithms) File "/Applications/anaconda/envs/modulename/lib/python3.5/site-packages/jwt/api_jws.py", line 186, in _verify_signature raise DecodeError('Signature verification failed') jwt.exceptions.DecodeError: Signature verification failed
如果我使用jwt.io同样的道理,使用Base64加密选项,则似乎工作。
它工作得像一阵微风!谢谢。 java jjwt包没有清楚地提到我们提供的密钥被假定为base64编码的字符串。 – Palaz
很高兴提供帮助,如果此答案解决了您的问题,请通过单击答案旁边的复选标记将其标记为已接受。有关更多信息,请参阅:https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work。 –