IZN Tools

Декодер JWT

Header, payload и срок жизни — без отправки токена куда-либо.

Подпись не проверяется — для этого нужен ваш секрет
ЗАГОЛОВОК
ПОЛЕЗНАЯ НАГРУЗКА
Ожидание ввода
Посчитано на вашем устройстве
Похожие
Форматирование JSONКодирование в Base64Тестер регулярных выраженийДекодирование Base64СкороГенератор UUIDСкороВалидатор JSONСкоро

Из чего состоит JWT

JSON Web Token — три сегмента base64url, соединённые точками: header.payload.signature. Заголовок называет алгоритм подписи, полезная нагрузка несёт утверждения, подпись покрывает первые две части. Первые две части закодированы, а не зашифрованы — их прочитает любой, у кого есть токен. Поэтому в JWT нельзя класть секреты.

Как пользоваться

Вставьте токен. Заголовок и полезная нагрузка появятся отформатированным JSON, а любое временное поле будет показано и как ISO-метка, и в вашем часовом поясе; просроченный токен подсвечивается в строке состояния.

[ SCREENSHOT — jwt-decoder ]
Просроченный токен: строка состояния сообщает об этом до того, как вы сами разберёте поле exp.

Какие поля стоит проверять

| Поле | Что означает | Что обычно ломается | | --- | --- | --- | | exp | Срок истечения, в секундах | Путают с миллисекундами, получая дату 1970 года | | iat | Время выпуска | Расхождение часов между сервисами делает свежий токен «из будущего» | | nbf | Не действителен раньше | Молча отвергает токен, который выглядит нормальным | | aud | Для кого предназначен | Токен другого сервиса принимают, потому что поле никто не проверяет | | alg | Алгоритм подписи | none или RS256-токен, проверяемый как HS256 |

Декодировать — не значит проверить

Эта страница отвечает на вопрос «что написано в токене». Она не отвечает на вопрос «можно ли ему верить» — для этого нужны ключ, часы и политика по получателю и издателю, и всё это живёт на вашем сервере. Используйте инструмент, чтобы понять, что вы отправляете; проверку оставьте там, где хранится секрет.

Вопросы

Проверяется ли подпись?+

Нет, и это сделано намеренно. Для проверки HS256 нужен общий секрет, для RS256 — открытый ключ. Вставить секрет подписи в веб-страницу — ровно та ошибка, ради предотвращения которой этот инструмент и сделан. Декодирование показывает, что токен утверждает; решать, верить ли ему, должен только ваш бэкенд.

Токен уходит на сервер?+

Нет. Токен разбивается и раскодируется из Base64 прямо в этой вкладке. Можно открыть панель сети и убедиться, что со страницы ничего не уходит. В этом и весь смысл локального декодера для учётных данных.

Почему exp — большое число, а не дата?+

RFC 7519 определяет exp, iat и nbf как секунды с 1970 года, а Date в JavaScript работает в миллисекундах. Если передать сырое значение в new Date(), получится дата в 1970-м — классическая ошибка в 1000 раз. Здесь умножение сделано правильно, показаны и ISO-значение, и ваше локальное время.

В токене alg: none — это проблема?+

Да. Неподписанный токен может отредактировать кто угодно. Библиотека, принимающая alg: none без явного разрешения, содержит известную уязвимость; если вы видите такое на боевом токене, это находка, а не любопытный факт.