Декодировщик JWT
Вставьте JWT (три части, закодированные в base64url и разделённые точками). Декодер покажет заголовок, полезную нагрузку и подпись, декодированные и аккуратно отформатированные, а также обнаруженный алгоритм, срок действия токена по вашему местному времени и согласованность значений nbf («не ранее»), iat («время выпуска») и exp («срок действия»). При наличии секрета или открытого ключа подпись можно дополнительно проверить.
Как декодировать JWT
-
1
Вставьте токен
Три строки в формате base64url, разделённые символом `.` (заголовок.полезная нагрузка.подпись).
-
2
Прочитайте декодированный заголовок
Алгоритм, тип и идентификатор ключа (`kid`): алгоритм указывает, какой тип ключа требуется для верификации.
-
3
Прочитайте полезную нагрузку
Стандартные утверждения (`iss`, `sub`, `aud`, `exp`, `iat`, `nbf`, `jti`) плюс любые пользовательские утверждения, которые выпускает ваше приложение.
-
4
Проверить (опционально)
Укажите секрет HMAC (для алгоритмов HS256, HS384 и HS512) или публичный ключ (для алгоритмов RS256, ES256 и других) для подтверждения действительности подписи.
Анатомия JWT
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
.
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkFsaWNlIiwiaWF0IjoxNjAwMDAwMDAwfQ
.
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
Каждый сегмент закодирован в base64url (а не в стандартном base64). Заголовок, это JSON вида {"alg":"HS256","typ":"JWT"}, полезная нагрузка, JSON вида {"sub":"1234567890","name":"Alice","iat":1600000000}, а подпись, это HMAC- или RSA-подпись строки header.payload.
Стандартные утверждения (RFC 7519)
| Утверждение | Название | Примечания |
|---|---|---|
iss |
Издатель | Кто выпустил токен |
sub |
Субъект | О ком этот токен |
aud |
Аудитория | Для кого предназначен токен |
exp |
Время истечения | Метка времени Unix; после неё токен отклоняется |
nbf |
Не ранее | Метка времени Unix; до неё токен отклоняется |
iat |
Время выпуска | Метка времени Unix создания токена |
jti |
Идентификатор JWT | Уникальный идентификатор для списков отзыва |
Поддерживаемые алгоритмы
Значение alg |
Тип ключа |
|---|---|
HS256/HS384/HS512 |
Общий секрет HMAC |
RS256/RS384/RS512 |
Открытый ключ RSA |
ES256/ES384 |
Открытый ключ ECDSA |
PS256/PS384 |
Открытый ключ RSA-PSS |
EdDSA / Ed25519 |
Кривая Эдвардса |
none |
Никогда не доверяйте этому, неподписанные токены |
Ловушка alg: none
Ранние библиотеки JWT допускали токены "alg": "none" и наивно считали их действительными. Всегда:
- Заносите в белый список алгоритмы, которые принимает ваше приложение.
- Безоговорочно отклоняйте
alg: none. - Отклоняйте
alg: HS256, когда код проверки ожидаетRS256(атака «путаница алгоритмов»).
Чем JWT НЕ является
- Не зашифрован. Заголовок и полезная нагрузка закодированы в base64, что декодируется элементарно. Никогда не помещайте секреты в JWT, не обернув его в JWE.
- По умолчанию не отзывается. После выпуска JWT действителен вплоть до
exp. Для отзыва нужен чёрный список или короткий срок действия плюс токены обновления. - Не является заменой сессионной cookie во всех сценариях. Непрозрачные токены, хранящиеся на стороне сервера, часто проще и безопаснее.
Частые ошибки
- Доверять заголовку. Значения
kidиalgберутся из самого токена. Скомпрометированный сервер может задать их произвольно; всегда сверяйтесь с фиксированным списком. - Игнорировать расхождение
nbfиiat. Из-за дрейфа часов возможна ситуацияiat > now. Закладывайте небольшой допуск (30–60 с). - Логировать JWT целиком. Полезная нагрузка часто содержит идентификаторы пользователей, адреса электронной почты, права доступа, PII, которым не место в stdout.
- Использовать HS256 со слабым секретом. Секрет из 16 символов подбирается перебором за считаные минуты. Используйте не менее 256 бит случайной энтропии.
Часто задаваемые вопросы
Нет. Декодирование выполняется в вашем браузере. Токен сохраняется локально, это важно, поскольку JWT-токены часто содержат данные сессии, идентификаторы пользователей и права доступа.
Да. При вставке общего секрета HMAC или публичного ключа, закодированного в формате PEM, проверка выполняется в вашем браузере; ключ никогда не покидает вашего устройства.
Это означает, что токен не подписан. Ни в коем случае не принимайте такие токены в производственной среде, их можно легко подделать. Несколько известных уязвимостей типа CVE были связаны именно с библиотеками, которые по умолчанию использовали формат alg: none.
Подпись по протоколу JWT подтверждает подлинность данных, но не их конфиденциальность. Заголовок и полезная нагрузка кодируются с использованием формата Base64URL, этот процесс обратим. Для обеспечения конфиденциальности рекомендуется применять алгоритм шифрования JSON Web Encryption (JWE) к данным в формате JWT или избегать передачи чувствительной информации в полезную нагрузку.
Сопутствующие инструменты
Справочная таблица ASCII
Полная таблица ASCII от 0 до 127 с десятичным, шестнадцатеричным, восьмеричным и двоичным представлением, а также записью числовых ссылок HTML, включая NUL, LF и DEL.
Справочник символов HTML
Справочник HTML-сущностей с поиском, их именованными и числовыми кодами, а также копированием специальных символов и знаков одним кликом.
Справочник сочетаний клавиш
Ищите документированные сочетания по умолчанию для VS Code, Chrome и Bash с GNU Readline в macOS, Windows и Linux.
Конвертер CMYK в RGB
Преобразуйте проценты CMYK в приблизительные значения RGB и Hex для быстрого экранного предпросмотра по стандартной формуле.
Шпаргалка по Markdown
Практический справочник Markdown с настоящим предпросмотром и готовыми для копирования примерами заголовков, списков, таблиц, кода, ссылок, изображений и синтаксиса GFM.
Счетчик FPS
Измерьте FPS браузера через requestAnimationFrame: сглаживание, минимальная и максимальная частота кадров, порог предупреждения и график по желанию. Работает локально, без загрузок и API.
Инструмент доступен на других языках
- JWT-Dekoder [DE]
- Décodeur JWT [FR]
- JWT-avkodare [SV]
- JWT 해독기 [KO]
- JWT-decoder [NL]
- مُفكّك JWT [AR]
- Decodificador JWT [ES]
- Decoder JWT [ID]
- JWTデコーダ [JA]
- ตัวถอดรหัส JWT [TH]
- Mã giải mã JWT [VI]
- Dekoder JWT [PL]
- Decodificador JWT [PT]
- JWT Dekoderi [TR]
- JWT 解码器 [ZH]
- JWT Decoder [EN]
- Decoder JWT [IT]