Об этом инструменте
Веб-токены JSON (JWT) — это компактный URL-безопасный формат для передачи утверждений между двумя сторонами, определенный в RFC 7519. JWT — это три сегмента с кодировкой base64url, разделенные точками: заголовок (алгоритм и тип токена), полезные данные (утверждения) и подпись (криптографическое доказательство подлинности). Заголовок и полезные данные представляют собой JSON, закодированный в формате Base64url для обеспечения безопасности URL-адресов; подпись использует один из нескольких алгоритмов (HS256, RS256, ES256 и другие) для закодированного заголовка и полезной нагрузки.
Декодирование JWT — разделение его на сегменты и декодирование каждого из них в формате Base64 — не требует какого-либо секрета. Любой, у кого есть текст токена, может прочитать его заголовок и полезную нагрузку. Однако подпись можно проверить только с помощью секретного (HMAC) или открытого ключа (асимметричного). Расшифровка предназначена для проверки; проверка – это то, что доказывает подлинность.
Этот декодер разделяет токен, декодирует каждый сегмент с помощью Base64, анализирует заголовок и полезные данные как JSON и показывает результат. Он не пытается проверить подпись, поскольку для этого требуется секретный или открытый ключ, которого нет у декодера. Декодированные выходные данные доступны для проверки только для чтения. Это полезно для отладки токенов, но не заменяет правильную проверку в коде приложения.
Зачем декодировать JWT
Отладка проблем аутентификации почти всегда включает проверку токенов. Токен, который выглядит действительным в коде, может иметь неверные утверждения, неожиданный алгоритм, просроченную временную метку или несоответствие аудитории. Расшифровка токена показывает, что именно создал эмитент.
Проверка токенов во время работы по интеграции также помогает. При подключении к стороннему API или поставщику удостоверений фактические имена, форматы и структуру утверждений лучше всего понять путем декодирования образцов токенов, а не полагаться на документацию, которая может быть устаревшей.
Как использовать
Вставьте токен, получите разобранное содержимое.
- Вставьте свой JWT: Перетащите полный токен (header.payload.signature) в область ввода. Декодер принимает токены с дополнительным префиксом Bearer или без него.
- Проверьте заголовок: В заголовке указан алгоритм подписи (alg) и тип токена (typ). Распространенными алгоритмами являются HS256, RS256 и ES256. Следите за параметром alg: none, который сигнализирует о неподписанном токене и редко бывает безопасным в рабочей среде.
- Осмотрите полезную нагрузку: Полезная нагрузка содержит утверждения: iss (эмитент), sub (тема), aud (аудитория), exp (срок действия), iat (выпущено) и любые утверждения, специфичные для приложения. Стандартные временные метки — это секунды эпохи Unix.
- Проверьте отдельно: Декодер не проверяет подпись. Чтобы проверить подлинность, запустите токен через библиотеку 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?
- От нескольких сотен до нескольких тысяч символов. Длина зависит от количества и размера заявок, а также длины подписи (которая зависит от алгоритма).
Related Articles
DeveloperEssential Developer Tools: JSON, Base64, RegEx, and More
A comprehensive overview of the developer utilities every programmer should know, from data format converters to encoding tools.
9 min readDeveloper & SecurityHashing, Encryption, and Encoding Explained: A Developer's Security Guide
Understand the differences between hashing, encryption, and encoding. Learn when to use MD5, SHA-256, Base64, AES, and other cryptographic tools in your applications.
10 min readData & ProductivitySpreadsheet & Data Conversion Guide: Excel, CSV, JSON, and More
Learn how to convert between spreadsheet and data formats like Excel, CSV, JSON, and XML. Practical tips for handling data migration, cleaning, and transformation.
10 min readPrivacy & TechnologyWhy Browser-Based Tools Are the Future: No Installs, No Uploads, No Risk
Discover why browser-based tools are replacing desktop software and cloud uploads. Learn how client-side processing keeps your files private while delivering powerful functionality.
7 min read