python解码JWT不包含任何点



我得到了一个不包含任何点的JWT。我在某个地方读到,JWT的典型格式是3段字符串,总共有2个点。当我尝试解码令牌时,使用PyJWT,我得到了以下错误-

Traceback (most recent call last):
File "/home/neelanjana/.virtualenvs/athena_env/lib/python3.7/site-packages/jwt/api_jws.py", line 180, in _load
signing_input, crypto_segment = jwt.rsplit(b'.', 1)
ValueError: not enough values to unpack (expected 2, got 1)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/neelanjana/.virtualenvs/athena_env/lib/python3.7/site-packages/jwt/api_jwt.py", line 84, in decode
payload, _, _, _ = self._load(jwt)
File "/home/neelanjana/.virtualenvs/athena_env/lib/python3.7/site-packages/jwt/api_jws.py", line 183, in _load
raise DecodeError('Not enough segments')
jwt.exceptions.DecodeError: Not enough segments

然而,当我在jwt.io上放置相同的令牌时,它会被解码,我可以看到完整的字典。我缺少什么?

这是我的代码-

import jwt
a = "someToken"
print(jwt.decode(a))

在此处将粘贴垃圾箱链接附加到令牌,因为它太长,无法放在此处。

附言:我不赞成使用pyjwt。如果任何其他图书馆能解码它,对我来说都是一样的。

为了回答我自己的问题,上面的字符串不是JWT,而是一个base64编码的字符串。使用base64解码恢复了实际dict。

最新更新