Декодер JWT

Декодируйте любой JSON Web Token в браузере: header и payload, exp, iat и nbf в виде настоящих дат в вашем часовом поясе и истёк ли токен.

Декодируется в вашем браузере. Токен никогда не отправляется на наш сервер.

Сводка

Заголовок (header)


                    

Payload (claims)


                    

Токен и подпись

Читайте любой JWT, никуда его не отправляя

Вставьте JSON Web Token, и декодер разделит его на три части: заголовок (каким алгоритмом он подписан), payload (claims: кто пользователь, к чему у него доступ и когда истекает токен) и подпись. JSON форматируется, чтобы его можно было прочитать с одного взгляда.

Временные claims превращаются в настоящие даты. exp, iat и nbf показываются в вашем часовом поясе, в UTC и в виде «через 20 минут» или «3 дня назад», а статус сразу говорит, действует ли токен, истёк или ещё не вступил в силу.

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

Как декодировать JWT

  1. Скопируйте токен из приложения, заголовка Authorization, cookie или инструментов разработчика в браузере.
  2. Вставьте его в поле. Префикс Bearer, кавычки, пробелы и переносы строк удаляются автоматически.
  3. Посмотрите сводку: статус, алгоритм, издателя, субъекта, аудиторию и точное время выдачи и истечения.
  4. Кнопками копирования перенесите отформатированный JSON заголовка или payload в баг-репорт или свои заметки.

Что означают основные claims

  • exp (expiration time): после этого момента токен нужно отклонять.
  • iat (issued at): когда токен был создан.
  • nbf (not before): до этого момента токен принимать нельзя.
  • iss (issuer): кто выпустил токен, часто URL вашего сервера авторизации.
  • sub (subject): о ком токен, обычно ID пользователя.
  • aud (audience): приложение или API, для которых предназначен токен.
  • alg и kid (в заголовке): алгоритм подписи, например HS256 или RS256, и ID ключа, которым токен подписан.

Даты в JWT — это значения NumericDate: число секунд с 1 января 1970 года UTC. Декодер сам переводит их в даты, так что отдельный конвертер timestamp не нужен.

Советы по отладке

  • Если API отвечает 401 сразу после входа, сначала проверьте exp и nbf. Часы сервера, которые спешат или отстают на несколько минут, — частая причина; большинство библиотек допускают небольшой запас.
  • Дата через десятки тысяч лет означает, что значение записано в миллисекундах вместо секунд. Декодер предупредит об этом.
  • Сравните aud и iss с тем, что ожидает ваш API. Токен, выданный для другого приложения или окружения (staging вместо продакшена), — частая причина ошибок «неверный токен».
  • Заголовок с alg, равным none, означает, что токен не подписан. Никогда не принимайте такие токены в продакшене.

Ограничения и что важно знать

  • Декодировать — не значит проверить. Любой может создать токен с любыми claims; подлинность доказывает только проверка подписи правильным ключом на вашем сервере. Этот инструмент подписи не проверяет.
  • Payload обычного JWT только закодирован, а не зашифрован. Его может прочитать любой, у кого есть токен, поэтому никогда не храните в claims пароли и секреты.
  • Зашифрованные токены (JWE, пять частей) нельзя прочитать без ключа, поэтому показывается только их заголовок.
  • Числа показываются ровно так, как они записаны в токене, поэтому длинные числовые ID никогда не округляются.

Частые вопросы

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

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

Может ли инструмент сказать, действителен ли токен?

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

Почему токен показан как истёкший, хотя я только что его получил?

Проверьте часы сервера, который его выдал, и убедитесь, что exp указан в секундах, а не в миллисекундах. Если iat тоже на несколько часов в прошлом, часы сервера, скорее всего, идут неправильно.

Чем декодер JWT отличается от декодера Base64?

JWT — это три части в кодировке Base64URL, соединённые точками. Декодер Base64 читает по одной части, а декодер JWT сам разделяет токен, понимает URL-безопасный алфавит и отсутствие дополнения и превращает даты в понятное время.

Работает ли он офлайн?

Да. После загрузки страницы можно отключиться от интернета и продолжать декодировать токены.

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

  • Base64 декодер: Мгновенно раскодируйте строку Base64 обратно в читаемый текст. Разбирайте заголовки авторизации, токены, ответы API и письма. Бесплатный Base64 декодер.
  • JSON валидатор и форматтер: Проверьте JSON онлайн и сделайте его читаемым. Найдите синтаксические ошибки и превратите минифицированный JSON в код с отступами. Бесплатно.
  • URL-декодер: Раскодируйте ссылки и query string с percent-encoding обратно в читаемый текст. Превратите %20, %26 и %D0%BA в обычные символы. Бесплатный URL-декодер.
  • Base64 кодировщик: Мгновенно закодируйте любой текст или строку в Base64. Удобно для data URI, заголовков HTTP Basic auth, почты и API. Бесплатный Base64 кодировщик.

Поделиться

Аналогичные инструменты

Base64 декодер

Мгновенно раскодируйте строку Base64 обратно в читаемый текст. Разбирайте заголовки авторизации, токены, ответы API и письма. Бесплатный Base64 декодер.

JSON валидатор и форматтер

Проверьте JSON онлайн и сделайте его читаемым. Найдите синтаксические ошибки и превратите минифицированный JSON в код с отступами. Бесплатно.

URL-декодер

Раскодируйте ссылки и query string с percent-encoding обратно в читаемый текст. Превратите %20, %26 и %D0%BA в обычные символы. Бесплатный URL-декодер.

Популярные бесплатные инструменты