Бесплатный конвертер

Декодер JWT-токена

Мгновенно декодируйте заголовок и полезную нагрузку JWT (JSON Web Token) прямо в браузере. Бесплатно, конфиденциально и на стороне клиента — данные не отправляются на сервер.

Об этом инструменте

Веб-токены JSON (JWT) — это компактный URL-безопасный формат для передачи утверждений между двумя сторонами, определенный в RFC 7519. JWT — это три сегмента с кодировкой base64url, разделенные точками: заголовок (алгоритм и тип токена), полезные данные (утверждения) и подпись (криптографическое доказательство подлинности). Заголовок и полезные данные представляют собой JSON, закодированный в формате Base64url для обеспечения безопасности URL-адресов; подпись использует один из нескольких алгоритмов (HS256, RS256, ES256 и другие) для закодированного заголовка и полезной нагрузки.

Декодирование JWT — разделение его на сегменты и декодирование каждого из них в формате Base64 — не требует какого-либо секрета. Любой, у кого есть текст токена, может прочитать его заголовок и полезную нагрузку. Однако подпись можно проверить только с помощью секретного (HMAC) или открытого ключа (асимметричного). Расшифровка предназначена для проверки; проверка – это то, что доказывает подлинность.

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

Зачем декодировать JWT

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

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

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

Вставьте токен, получите разобранное содержимое.

  1. Вставьте свой JWT: Перетащите полный токен (header.payload.signature) в область ввода. Декодер принимает токены с дополнительным префиксом Bearer или без него.
  2. Проверьте заголовок: В заголовке указан алгоритм подписи (alg) и тип токена (typ). Распространенными алгоритмами являются HS256, RS256 и ES256. Следите за параметром alg: none, который сигнализирует о неподписанном токене и редко бывает безопасным в рабочей среде.
  3. Осмотрите полезную нагрузку: Полезная нагрузка содержит утверждения: iss (эмитент), sub (тема), aud (аудитория), exp (срок действия), iat (выпущено) и любые утверждения, специфичные для приложения. Стандартные временные метки — это секунды эпохи Unix.
  4. Проверьте отдельно: Декодер не проверяет подпись. Чтобы проверить подлинность, запустите токен через библиотеку JWT с соответствующим секретным или открытым ключом в коде вашего приложения.

Общие случаи использования

Технические детали

Формат JWT представляет собой три сегмента, соединенных точками. Каждый сегмент закодирован в формате Base64url — безопасный для URL-адресов вариант Base64, в котором вместо + и / используются символы - и _, а заполнение иногда опускается. Декодирование требует отмены безопасных для URL-адресов замен, заполнения сегмента и декодирования base64.

Заголовок и полезные данные после декодирования представляют собой JSON. Сегмент подписи является двоичным (необработанные байты подписи) и не читается человеком; для того, чтобы ключ проверки был полезным, требуется ключ проверки.

Общие утверждения, определенные в RFC 7519: iss (эмитент), sub (идентификатор субъекта), aud (аудитория), exp (срок действия в секундах эпохи Unix), nbf (метка времени «не до»), iat (метка времени выдачи), jti (уникальный идентификатор токена). Утверждения, специфичные для приложения, могут отображаться под любым именем.

Лучшие практики

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

Безопасно ли вставлять сюда мой JWT?
Да. Декодирование происходит полностью в вашем браузере — токен никогда не отправляется ни на какой сервер. Однако JWT — это учетные данные — не делитесь ими публично (на снимках экрана, в сообщениях Stack Overflow и т. д.), поскольку они могут предоставить доступ к вашим учетным записям.
Проверяет ли этот инструмент подпись JWT?
Этот инструмент декодирует и отображает содержимое токена. Для проверки подписи требуется секретный ключ (HMAC) или открытый ключ (RSA/ECDSA), который должен оставаться на вашем сервере. Инструмент показывает используемый алгоритм, но не может проверить его без ключа.
Что означают стандартные утверждения JWT?
iss = эмитент, sub = тема (идентификатор пользователя), exp = срок действия (временная метка Unix), iat = выдано, nbf = не раньше, aud = аудитория, jti = идентификатор JWT. Пользовательские утверждения могут содержать любые данные, специфичные для приложения.
Почему кто-то может декодировать JWT?
JWT закодированы, а не зашифрованы. Полезная нагрузка закодирована в формате Base64URL (не зашифрована), поэтому ее может прочитать любой. Подпись предотвращает подделку, а не чтение. Никогда не храните конфиденциальные данные (пароли, SSN) в полезных нагрузках JWT.
Почему у некоторых токенов отсутствует подпись?
Токены с alg: none не имеют подписи. По спецификации они являются действительными JWT, но не предоставляют никаких гарантий подлинности и не должны приниматься в производство.
Зашифрованы ли JWT?
Стандартные полезные данные JWT подписываются, но не шифруются. JWE (JSON Web Encryption, RFC 7516) — это отдельный формат для зашифрованных токенов. Большинство существующих JWT — это JWS (только подписанные).
Мой токен загружен на сервер?
Нет. Декодирование происходит в вашем браузере; токен не покидает ваше устройство.
Какова продолжительность JWT?
От нескольких сотен до нескольких тысяч символов. Длина зависит от количества и размера заявок, а также длины подписи (которая зависит от алгоритма).