python декодировать JWT, не содержащий точек - PullRequest
0 голосов
/ 23 апреля 2020

Мне дан 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))

Прикрепление ссылки для вставки к токену здесь , поскольку его слишком долго помещать сюда.

PS Я не женат на идее использования pyjwt. Если какая-то другая библиотека сможет ее декодировать, для меня все равно.

...