Перейти к основному содержимому
Tooletto

Декодер JWT

Вставьте JWT, чтобы декодировать заголовок и payload, увидеть срок действия и проверить стандартные клеймы. Декодирование происходит полностью в браузере, поэтому токены доступа из продакшена никогда не покидают ваше устройство.

  • Файлы никогда не покидают ваше устройство
  • Бесплатно, без регистрации
  • Без водяных знаков
  • Работает офлайн после загрузки
Loading tool…

Как пользоваться: декодер jwt

  1. 1

    Вставьте ваш токен

    Вставьте полный JWT, включая обе точки. Он декодируется по мере ввода.

  2. 2

    Прочитайте клеймы

    Заголовок и payload форматируются, а срок действия и время выпуска показаны как читаемые даты.

  3. 3

    Скопируйте нужное

    Скопируйте декодированный payload в виде JSON для использования в другом месте.

Что на самом деле представляют собой три части JWT

JSON Web Token — это три сегмента, закодированных в Base64URL и соединённых точками: заголовок, описывающий алгоритм подписи и тип токена, payload, содержащий сами клеймы — кого идентифицирует токен, когда он истекает, какие права даёт, — и подпись, вычисленная по первым двум сегментам с помощью секрета или приватного ключа. Декодирование, которым занимается этот инструмент, означает Base64URL-декодирование первых двух сегментов обратно в читаемый JSON; о третьем сегменте инструмент не говорит ничего, кроме как показывает его исходное закодированное значение, потому что для проверки подписи нужен настоящий секрет подписи, а инструмент в браузере никогда не должен просить вас его вставить.

Это различие — декодирование против проверки — самое важное, что нужно понимать об инструменте для отладки JWT. Декодирование показывает, что токен *утверждает*; проверка показывает, можно ли этим утверждениям доверять, подтверждая, что подпись создана ожидаемым издателем. Токен может прекрасно декодироваться и показывать payload с заявлением о правах администратора, будучи при этом полностью поддельным, если никто и никогда не сверяет подпись с настоящим ключом подписи.

Почему JWT — не место для чувствительных данных

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

Как читать exp, iat и nbf, не занимаясь арифметикой вручную

Стандартные клеймы времени хранятся как Unix-время — обычное целое число, считающее секунды с 1 января 1970 года, — что удобно для сравнения машинами, но нечитаемо с первого взгляда для человека, отлаживающего токен глазами. Перевести `1735689600` в «1 января 2025, 00:00:00 UTC» вручную — это как раз тот вид мелкой, подверженной ошибкам арифметики, которую легко сделать неправильно под давлением времени, особенно при работе с разными часовыми поясами. Отображение всех трёх клеймов как настоящих локальных дат и прямое указание, истёк ли токен, действителен ли он сейчас или ещё не активен, превращает отладочную сессию, которая иначе потребовала бы побочных вычислений, в мгновенный читаемый ответ.

Часто задаваемые вопросы

Безопасно ли вставлять сюда токен из продакшена?

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

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

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

JWT зашифрован?

Нет. Заголовок и payload закодированы в Base64URL — это кодирование, а не шифрование: любой, у кого есть токен, может прочитать каждый клейм. Никогда не кладите в payload JWT пароли, номера карт или персональные данные.

Что означают exp, iat и nbf?

Это Unix-время в секундах. `exp` — момент истечения токена, `iat` — момент выпуска, а `nbf` — самый ранний момент, когда токен может быть принят. Инструмент отображает все три как локальные даты и сообщает, действителен ли токен прямо сейчас.

Почему мой токен не декодируется?

JWT должен состоять ровно из трёх частей, разделённых точками. Обычные причины — обрезанная копия, оставшийся префикс «Bearer », или обрамляющая кавычка из JSON-ответа.