JWT Decoder — разбор токена

Разбираем токен на части и объясняем каждое поле по-русски: даты вместо цифр, срок годности словами, проверка подписи ключом. Всё считается в браузере.

Полезная нагрузка токена не зашифрована — это обычный Base64. Её прочитает любой, у кого токен окажется в руках. Подпись защищает от подделки, но не от чтения.

Можно вставлять вместе со словом Bearer — уберём сами. Токен считается прямо в браузере и на наш сервер не попадает.

Запрос обычно звучит как «расшифровать токен», и в этом слове скрыто опасное заблуждение. Расшифровывать нечего: полезная нагрузка JWT записана обычным Base64, и прочитать её может любой, у кого токен окажется в руках. Подпись защищает от подделки, но не от чтения.

Отсюда самая частая ошибка: в токен кладут телефон, почту, паспортные данные или даже другой токен, считая содержимое тайной. Мы ищем такие поля по названиям и предупреждаем: в токене место идентификаторам, а не самим данным.

Сокращения вроде iss, aud, nbf и jti получают человеческие подписи, а числа времени — обычную дату и срок словами: «истекает через 2 часа» или «истёк 5 дней назад».

В разборе мы прямо называем то, что чаще всего оказывается дырой:

  • alg: none — токен не подписан вовсе, подделать его может кто угодно, а сервер, который такое принимает, пускает любого;
  • нет поля exp — токен живёт вечно, и украденный однажды остаётся рабочим навсегда;
  • срок годности в месяцы у токена доступа: столько живут токены обновления, а не доступа;
  • токен просрочен или ещё не вступил в силу.

Разбор показывает, что написано в токене, но не говорит, настоящий ли он. Вставьте секрет для HS256 или публичный ключ для RS256 и ES256, и мы посчитаем подпись встроенной криптографией браузера. Ответ будет однозначным: подпись сошлась или нет. Ключ никуда не отправляется, а без ключа разбор всё равно работает.

Про безопасность самого разбора

Токен — это действующий пропуск: у кого он есть, тот входит от вашего имени. Поэтому здесь ничего не отправляется на сервер, счёт идёт целиком в браузере. И общее правило, которое стоит помнить: если рабочий токен побывал в каком-то онлайн-сервисе, надёжнее считать его скомпрометированным и выпустить новый.

Другие инструменты