Кодирование
JWT Encoder/Decoder
Кодирование и декодирование JWT-токена — заголовок, полезная нагрузка, подпись HMAC и стандартные поля.
Подписанные примеры (все, кроме none) требуют HTTPS — сейчас страница открыта без HTTPS.
Для RS/PS/ES ключ генерируется автоматически и временно — только для демонстрации, повторно использовать его нельзя.
Подписанные примеры (все, кроме none) требуют HTTPS — сейчас страница открыта без HTTPS.
Claims
JWT (JSON Web Token) — компактный формат передачи подписанных данных, состоящий из трёх частей, разделённых точкой: заголовка (header), полезной нагрузки (payload) и подписи (signature). Инструмент декодирует любой JWT и показывает все три части, а также позволяет собрать новый токен с подписью HMAC.
Декодирование не проверяет валидность подписи — чтобы увидеть содержимое токена, секретный ключ не нужен. Проверка подписи нужна только тогда, когда вы доверяете токену как подлинному.
Как пользоваться
- Декодирование: вставьте JWT — инструмент разберёт его на header, payload и подпись и подсветит стандартные поля (exp, iat, sub и другие).
- Кодирование: заполните header и payload, укажите секрет — получите готовый подписанный токен HMAC (HS256/HS384/HS512).
- Проверка срока действия: поле exp показывается как обычная дата, поэтому сразу видно, не истёк ли токен.
Типичные сценарии
- Диагностика проблем аутентификации — быстро посмотреть, что именно лежит в токене из запроса.
- Проверка, какие claims (роли, разрешения, срок действия) выдаёт бэкенд.
- Генерация тестового токена для локальной разработки без запуска сервера авторизации.
Что стоит помнить
JWT не зашифрован, а лишь закодирован в Base64URL — payload может прочитать кто угодно. Не кладите туда пароли или другие секреты.
Подпись защищает от подделки данных, но не от их просмотра. Для конфиденциальности нужно дополнительное шифрование (JWE) или HTTPS-транспорт.
Статья об этом инструменте: JWT: структура токена и что значит «декодировать» JWT
Часто задаваемые вопросы
Декодирование JWT проверяет подпись токена?
Нет. Без секрета или ключа декодирование лишь показывает содержимое Header и Payload — это просто Base64URL-данные, доступные всем. Подтвердить, что токен подлинный и не изменён, можно только проверив подпись с правильным ключом.
Значит ли это, что данные в JWT можно спрятать от пользователя?
Нет, Payload не шифруется, а лишь кодируется, поэтому любой человек с токеном может прочитать claims. Секретные данные в JWT класть не стоит — подпись гарантирует только целостность, а не конфиденциальность.
Секрет и ключи, введённые в инструмент, куда-то отправляются?
Нет, кодирование, декодирование и генерация подписи выполняются полностью в браузере — секрет и ключи никуда не передаются.
Что такое атака с подменой алгоритма на "none"?
Если бекенд наивно доверяет полю alg из заголовка токена, злоумышленник может заменить его на none, убрать подпись — и токен с произвольными данными пройдёт проверку. Надёжные библиотеки требуют явно задавать ожидаемый алгоритм при верификации.
Почему не стоит хранить JWT в localStorage для чувствительных сессий?
localStorage доступен любому JavaScript-коду на странице, поэтому уязвим к XSS — вредоносный скрипт может украсть токен. Для сессионных токенов безопаснее использовать httpOnly-cookie, недоступные для JavaScript.