tigtools

Декодер JWT

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

Работает в браузере Без регистрации

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

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

  1. Скопируйте токен из заголовка Authorization, cookie или инструментов разработчика браузера. Начальная часть «Bearer » удаляется автоматически.
  2. Вставьте токен в поле. Заголовок и полезная нагрузка отобразятся в виде форматированного JSON.
  3. Проверьте строку состояния и таблицу утверждений: в них указаны издатель, аудитория и срок действия с учётом вашего часового пояса.
  4. При необходимости скопируйте JSON заголовка или полезной нагрузки.

Как это работает

JSON Web Token (JWT, RFC 7519) в распространённом формате с подписью (JWS) состоит из трёх частей, закодированных в base64url и разделённых точками. В заголовке указано, каким алгоритмом подписан токен, например HS256 (HMAC с SHA-256) или RS256 (RSA). Полезная нагрузка содержит claims — сведения о пользователе и самом токене. Подпись позволяет серверу проверить, что заголовок и полезная нагрузка не были изменены.

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

Декодирование ничего не доказывает о токене. Без ключа издателя нельзя определить, подлинна ли подпись, поэтому результат нельзя использовать для решения о том, можно ли доверять токену. Проверку нужно выполнять на сервере с помощью актуальной библиотеки JWT, которая проверяет подпись, алгоритм, exp, nbf, iss и aud.

Зарегистрированные claims описаны в таблице. exp, nbf и iat — значения типа NumericDate: число секунд с 1 января 1970 года по UTC. Инструмент преобразует их в даты вашего часового пояса и сравнивает с часами устройства, не учитывая небольшой допуск, который серверы часто используют из-за расхождения часов. Если часы устройства показывают неверное время, статус тоже будет неверным.

Токены из пяти частей — это зашифрованные JWT (JWE). Без ключа их полезную нагрузку декодировать нельзя, поэтому инструмент только сообщает формат.

Примеры

Почему API возвращает ошибку 401?

Декодируйте токен доступа, который отправляет ваше приложение. Если в строке статуса указано «Срок действия истёк …», клиенту нужно обновить токен. Если aud равен https://api.example.com, а запрос отправляется на https://api2.example.com, аудитория не совпадает.

Проверка ID-токена OpenID Connect

ID-токен от провайдера входа содержит iss (провайдера), sub (постоянный ID пользователя), aud (ID вашего клиента), iat и exp, а также профильные claims, например email и name. Декодирование покажет, какие именно claims получает ваше приложение.

Как прочитать claim с временной меткой

Полезная нагрузка содержит "exp": 1735689600. В таблице claims это значение отображается как 1 января 2025 года, 00:00:00 UTC, преобразованное в местное время, а также указано, сколько времени прошло или осталось.

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

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

Нет. Инструмент только декодирует заголовок и полезную нагрузку. Для проверки нужен секрет (для HS256) или открытый ключ издателя (для RS256 и ES256). Выполнять проверку следует на сервере с помощью доверенной библиотеки.

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

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

Почему любой может прочитать полезную нагрузку?

Подписанные JWT кодируются в base64url — это не шифрование. Подпись защищает токен от изменений, но не от прочтения. Если содержимое должно быть секретным, используйте зашифрованный JWT (JWE) или храните данные на сервере.

Что означает «exp» и в каких единицах оно задаётся?

exp — это время истечения срока действия в формате NumericDate: целое число секунд (не миллисекунд) с 00:00:00 UTC 1 января 1970 года. Токен нужно отклонять в этот момент или позже.

Почему появляется ошибка «недопустимый base64url»?

Вероятно, токен обрезался или изменился при копировании: например, потерялись последние символы, вокруг него появились кавычки или символы URL-кодирования (%2E вместо точки). Вставьте исходный токен без изменений.

Конфиденциальность

Токен декодируется с помощью JavaScript в вашем браузере. Он не отправляется на сервер, не сохраняется и не включается в аналитику. Проверка подписи и поиск ключа не выполняются, поэтому сетевые запросы не отправляются.