CodeKitHub
Русский
Инструменты кодирования

Декодер JWT

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

Заголовок

Полезная нагрузка

Расшифровка происходит полностью в вашем браузере — проверка подписи не требуется, и токен никуда не отправляется.

Что это за инструмент?

JWT (JSON Web Token) — это компактная строка, безопасная для использования в URL-адресах, которая используется для передачи утверждений между двумя сторонами — чаще всего в качестве токена аутентификации после входа в систему. Он состоит из трёх частей, разделённых точками: заголовка (алгоритм и тип токена), полезной нагрузки (фактические утверждения — идентификатор пользователя, роли, срок действия и т. д.) и подписи (используется сервером для проверки того, что токен не был подделан).

Заголовок и полезные данные представляют собой JSON, закодированный с помощью Base64URL (без шифрования), поэтому любой пользователь может декодировать и прочитать их без секретного ключа. Для проверки подлинности требуется секретный ключ только для подписи. Именно это и делает данный инструмент: он декодирует читаемые части и отображает их в виде отформатированного JSON, не пытаясь проверить подпись.

Зачем его использовать?

  • Заголовок и полезные данные, отформатированные в формате JSON, доступны для чтения сразу — больше не нужно вручную разбивать строку и декодировать Base64.
  • Автоматическая проверка срока действия: если полезные данные содержат атрибут «exp», он преобразуется в удобочитаемую дату и помечается как просроченный или действительный.
  • Копирование одним щелчком мыши — отдельно для заголовка или полезных данных.
  • 100 % на стороне клиента — токен декодируется локально и никогда не передается, поэтому его можно безопасно использовать даже с токенами из производственной системы.
  • Проверка подписи не выполнялась и не заявлена — это инструмент для отладки и проверки, а не валидатор.

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

  1. Вставьте свой JWT в поле (полную строку, включая все три части, разделенные точками).
  2. Заголовок и полезные данные декодируются автоматически по мере ввода текста.
  3. Если у токена есть утверждение «exp», проверьте строку срока действия — в ней указана точная дата и информация о том, истек ли срок действия токена.
  4. Нажмите «Копировать» под любым из полей, чтобы скопировать этот раздел в формате JSON.

Пример

Ввод

eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0IiwibmFtZSI6IkpvaG4gRG9lIiwiZXhwIjoxNzAwMDAwMDAwfQ.dQw4w9WgXcQ

Результат

Header: {"alg": "HS256"}
Payload: {"sub": "1234", "name": "John Doe", "exp": 1700000000}

Подпись (третья часть) никогда не декодируется и не проверяется — это непрозрачный хеш, используемый на стороне сервера для проверки подлинности.

Практические советы

  • Устранение ошибок «недопустимый токен»: сначала декодируйте полезные данные, чтобы проверить утверждение «exp» — наиболее частая причина заключается в истечении срока действия токена, и это не всегда очевидно из одного только сообщения об ошибке.
  • Проверка фактического содержания токена стороннего API: многие API возвращают в качестве токена доступа JWT, который выглядит непонятным — декодируйте его здесь, чтобы увидеть области доступа, идентификатор пользователя или срок действия, которые фактически получает ваша интеграция.
  • Никогда не следует предполагать, что JWT зашифрован: если в ходе разработки вы обнаружите конфиденциальные данные (адрес электронной почты, внутренние идентификаторы) в расшифрованном поле данных, это сигнал о том, что следует перенести эти данные на сервер, а не полагаться на то, что клиент их не прочитает.

Типичные утверждения, которые можно встретить в полезной нагрузке

УтверждениеЗначение
subОбъект — как правило, идентификатор пользователя, который представляет токен
expСрок действия (временная метка Unix) — после истечения этого срока токен становится недействительным
iatДата выдачи — момент создания токена
issЭмитент — какой сервис/сервер выдал токен
audАудитория — для какого сервиса предназначен токен
роль / роли / сфера примененияПользовательские утверждения — разрешения или роли, предоставленные пользователю (не входят в стандарт JWT, но чрезвычайно распространены)

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

Проверяет ли этот инструмент подпись JWT?

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

Безопасно ли вставлять сюда реальный JWT из производственной среды?

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

Почему любой может прочитать содержимое моего JWT без пароля?

По замыслу — заголовок и полезные данные JWT кодируются с помощью Base64URL, а не шифруются. Кодировка не обеспечивает безопасность; она лишь делает JSON-данные безопасными для передачи по URL. Никогда не помещайте секретные данные (пароли, номера кредитных карт) непосредственно в полезные данные JWT — исходите из того, что любой, у кого есть токен, может прочитать его содержимое.

Что означает утверждение «exp» и почему это важно?

«exp» — это время истечения срока действия токена, представленное в виде временной метки Unix (количество секунд с 1970 года). По истечении этого времени серверы отклоняют JWT, что вынуждает клиента пройти повторную аутентификацию. Этот инструмент преобразует его в удобочитаемую дату и отмечает, истек ли срок его действия, что полезно для отладки проблем типа «почему моя сессия завершилась».

Мой токен выдает ошибку разбора JSON — почему?

Либо эта строка не является действительным JWT (она должна состоять ровно из трёх частей, разделённых точками), либо она была усечена или изменена — частой причиной является случайное разбиение токена на несколько строк или отсутствие конечных символов при копировании.

Похожие инструменты