Декодер JWT

Декодировать JWT онлайн

Прочитайте заголовок и payload JWT, а также exp, iat и nbf в формате UTC. Вставьте токен или значение Bearer: для просмотра содержимого ключ не нужен.

Декодер JWTДекодирование в браузере
Поддерживается JWT или значение Authorization: Bearer. Инструмент не отправляет токены в API декодирования и не сохраняет ввод.
Загрузить пример
Только декодирование · подпись не проверена

Читаемые данные могут быть подделаны. Прежде чем доверять токену, проверьте подпись и требования приложения к полям.

01 Заголовок

Алгоритм и метаданные

{
  "alg": "HS256",
  "typ": "JWT"
}

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

Поля токена — claims

{
  "sub": "demo-user",
  "iss": "https://example.com",
  "aud": "demo-api",
  "iat": 1704067200,
  "nbf": 1704067200,
  "exp": 1704070800
}

Временные поля UTC

Сравнение с часами устройства без допуска на рассинхронизацию. Оно не подтверждает действительность токена.

ПолеВремя UTCСравнение с часами
iatВремя выпуска2024-01-01T00:00:00.000ZПолучение времени устройства…
nbfНачало действия2024-01-01T00:00:00.000ZПолучение времени устройства…
expСрок действия до2024-01-01T01:00:00.000ZПолучение времени устройства…

03 Подпись

Заявленный алгоритм: HS256 · 11 байт · не проверена

cGxhY2Vob2xkZXI

Что проверить при ошибке авторизации

Если API отклоняет запрос, посмотрите не только на срок действия. Поле aud указывает получателя и может быть строкой или массивом строк. iss обозначает издателя, а sub — субъект токена. Возможно, запрос отправлен с токеном для другого сервиса.

Эти поля, или claims, содержат утверждения самого токена. Декодирование не доказывает, что их записала доверенная сторона. Обязательные поля и допустимые значения задаются приложением или протоколом.

Три части JWT: что именно декодируется

Обычный подписанный JWT имеет вид header.payload.signature. Первые две части — объекты JSON в UTF-8, закодированные в Base64url. Последняя часть содержит байты подписи или MAC, а не ещё один JSON-документ.

Поддерживается токен без префикса, с Bearer или с Authorization: Bearer. Не вставляйте весь HTTP-запрос. Заголовок и полезную нагрузку можно копировать отдельно. Исходная запись чисел, в том числе больших целых идентификаторов, сохраняется.

Как прочитать exp и не перепутать единицы

exp — время окончания действия, nbf — момент, раньше которого токен не должен приниматься, iat — время выпуска. NumericDate задаётся в секундах от начала эпохи Unix. Значение 1704067200 соответствует 1 января 2024 года, 00:00 UTC. Это не миллисекунды JavaScript.

Сравнение выполняется по часам устройства без допуска на рассинхронизацию. Будущая дата exp не подтверждает ни подпись, ни соответствие получателя. Время выпуска в будущем — повод разобраться в данных, а не автоматический итоговый вердикт этого декодера.

«Расшифровать JWT» обычно означает прочитать Base64url

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

Инструмент не загружает ключи по URL и не использует встроенные ключи. Зашифрованные JWE из пяти частей, вложенные JWT и b64: false не поддерживаются. Ограничения: 50 000 символов и 64 уровня JSON. Повторяющиеся ключи отклоняются, чтобы избежать неоднозначного чтения.

Разбор примеров

Истёкший токен

Вымышленные поля и подпись-заглушка; для авторизации не подходит.

Вернуться к декодеру JWT

Без подписи

alg: none и пустая третья часть.

Вернуться к декодеру JWT

Unicode в claims

Многоязычный текст и несколько получателей; подпись — заглушка.

Вернуться к декодеру JWT

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

Нужен ли secret для декодирования?

Нет, если это трёхчастный JWT с JSON-заголовком и JSON-нагрузкой. Ключ нужен для криптографической проверки, которую этот инструмент не выполняет. Зашифрованные JWE здесь не расшифровываются.

Что означает alg: none?

Это незащищённый JWT без криптографической подписи. Третья часть пустая, но завершающая точка остаётся. Возможность прочитать такой токен не делает его надёжным средством авторизации.

Сохраняется ли введённый токен?

Декодер обрабатывает ввод в браузере, не отправляет его в API декодирования, не сохраняет и не добавляет в URL. Настоящий Bearer-токен может предоставлять доступ; для знакомства с инструментом есть вымышленные примеры.

Можно ли использовать примеры для входа?

Нет. Истёкший пример имеет exp 1 января 2024 года, 01:00 UTC, и подпись-заглушку. Пример Unicode содержит многоязычные значения и несколько получателей, тоже с заглушкой. Пример без подписи использует alg: none.

Почему возникает ошибка формата?

Проверьте три части, отсутствие пробелов, кавычек и заполнения Base64url. Первые две части должны быть JSON-объектами UTF-8. Дубли ключей и пустая подпись при alg, отличном от none, отклоняются. При ошибке предыдущий результат скрывается.

RFC 7519 · RFC 7515 · RFC 8725

Вернуться к декодеру JWT