JSON Web Tokens

JWT: расшифровать токен

Покажет payload, claims, алгоритм и срок действия. Токен не уходит с вашего устройства

Разбор JWT-токена: строка токена и раскрытые header, payload, claims и срок действия
Расшифровка JWT: payload, claims, алгоритм и срок годности, токен не уходит с устройства

Как расшифровать JWT токен

Вставьте строку в поле выше, и расшифровка начнётся сразу, кнопок нажимать не нужно. Ключ не требуется: заголовок и payload у JWT не зашифрованы, а всего лишь закодированы, поэтому прочитать их может кто угодно. Декодер разложит токен на три части, покажет claims списком с расшифровкой стандартных имён и отдельно выведет срок действия: истёк токен или сколько ему осталось. Всё считается прямо в браузере, токен никуда не отправляется.

Формат токена: из чего состоит JWT

JWT — это три блока, разделённые точками: заголовок (каким алгоритмом подписан токен), payload (сами данные: кто пользователь, какие у него роли, до какого времени токен годен) и подпись (она не содержит данных, а доказывает, что токен не подделали). Первые два блока — обычный JSON, поэтому декодер и показывает их читаемым списком.

У payload есть набор стандартных полей (registered claims), их понимает любая библиотека JWT:

ClaimЗначение
issIssuer, кто выпустил токен
subSubject, для кого выпущен токен (ID пользователя)
audAudience, для какого получателя предназначен токен
expExpiration time, момент, после которого токен недействителен
iatIssued at, когда токен выпущен
nbfNot before, момент, раньше которого токен ещё не действует
jtiJWT ID, уникальный идентификатор конкретного токена

Расшифровать токен — не значит проверить его

Это разные операции, и путать их опасно. Расшифровка — разбор Base64, ключ не нужен, делает кто угодно. Проверка токена — пересчёт подписи секретным или публичным ключом, и только она отвечает на вопрос «этот токен вообще наш?». Здесь подпись не проверяется намеренно, для этого пришлось бы просить у вас ключ. Поэтому решение о доступе всегда принимается на сервере после верификации, а декодер остаётся инструментом для отладки: посмотреть, что внутри, и понять, почему запрос отлетает. Разбор с примерами кода есть в статье что внутри JWT-токена и как работает авторизация.

Почему JWT не декодируется обычным Base64

Заголовок, payload и подпись JWT закодированы в Base64URL, варианте Base64, где символы + и / заменены на - и _, а завершающие = обычно опущены. Так строку можно безопасно вставлять в URL и заголовки без экранирования. Обычный Base64-кодировщик на такой строке споткнётся или выдаст мусор. Этот декодер сначала возвращает символы обратно и восстанавливает паддинг, а потом уже разбирает JSON.

Не вставляйте сюда боевые токены с чужими данными

Декодирование происходит локально в браузере, и сам инструмент никуда токен не отправляет. Но это не повод копировать в любой сайт токен из продакшена, где в payload лежат реальные email, роли или ID пользователей. Для отладки формата и claims безопаснее взять один из встроенных примеров (Auth0, Firebase, AWS Cognito) или тестовый токен, который вы сгенерировали сами, а не тот, что выдала боевая система реальному пользователю.

JWT — те же данные JSON, просто закодированные в base64. Разбор самого формата и отличие от XML есть в статье Что такое JSON: формат данных простыми словами, а про access- и refresh-токены, срок жизни и типичные ошибки написано в разборе JWT-токена.

Похожие инструменты

Другие полезные инструменты из той же категории

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

JWT (JSON Web Token) - это безопасный способ передачи информации в виде JSON объекта. Состоит из трех частей, закодированных в Base64 и разделенных точками: Заголовок (информация об алгоритме), Полезная нагрузка (утверждения/данные) и Подпись (проверка).

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

Утверждения - это заявления о сущности (обычно пользователе). Стандартные утверждения включают "iss" (издатель), "exp" (истечение), "sub" (субъект) и "aud" (аудитория). Пользовательские утверждения могут содержать любые JSON данные, необходимые вашему приложению.

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

Частые причины: неправильная структура токена (не 3 части), недопустимое кодирование Base64, поврежденные символы или токены, которые на самом деле не являются JWT. Убедитесь, что вставляете полный токен, включая все точки.