JWT декодер: расшифровка, проверка подписи и сборка токена
Вставьте токен: покажем header, payload и claims понятным языком, скажем, не истёк ли он, и проверим подпись. Токен, секрет и ключи не покидают ваше устройство.
Токен, секрет и ключи обрабатываются только на этой странице: никуда не отправляются, не попадают в адрес страницы и в аналитику.
header · payload · signature
Проверка подписи
Алгоритм:—Это единственный сетевой запрос самого инструмента, и он уходит только по нажатию кнопки.
Проверки
Header
Payload
Claims
Энкодер подписывает HMAC (HS256, HS384, HS512). Он нужен для тестовых токенов: боевые секреты на чужом компьютере не вводите.
Подписанный токен
Делаете API с авторизацией на токенах?
Проектируем и разрабатываем API, OAuth 2.0 и OpenID Connect, проверяем их на уязвимости. Расскажите о проекте, оценим сроки и бюджет.
Спасибо! Ответим в течение рабочего дня.
Коротко: вставьте JSON Web Token в поле выше. JWT декодер покажет header и payload в виде отформатированного JSON, расшифрует стандартные claims, скажет, не истёк ли токен, и проверит подпись вашим секретом или открытым ключом. На вкладке «Энкодер» можно собрать тестовый токен HS256, HS384 или HS512. Всё считается в браузере.
Мы сделали этот инструмент для своей работы с API и авторизацией в YuSMP Group. Если нужна команда, которая спроектирует авторизацию на токенах или проверит её на уязвимости, посмотрите разработку API и услуги по информационной безопасности.
Что такое JWT
JSON Web Token (RFC 7519) — строка из трёх частей в Base64URL, разделённых точками: header.payload.signature. В header указан алгоритм подписи (alg) и иногда идентификатор ключа (kid). В payload лежат claims: кто выдал токен, для кого он и когда истекает. Подпись подтверждает, что первые две части никто не менял. Payload закодирован, а не зашифрован: прочитать его может любой, у кого есть токен.
Как расшифровать и проверить JWT
- Вставьте токен в поле «Токен». Префикс
Bearerи переносы строк убираются сами. Три части подсвечены разными цветами: header, payload, signature. - Посмотрите результат. Header и payload показаны в виде отформатированного JSON. Блок Claims переводит
exp,iatиnbfв даты по UTC и в вашем часовом поясе и пишет «истёк 10 минут назад» или «истекает через 3 часа». - Проверьте предупреждения. Инструмент отмечает
alg: none, истёкший или ещё не действующий токен, отсутствиеexp, время в миллисекундах и поля, похожие на персональные данные. - Проверьте подпись. Для HS256/384/512 введите общий секрет текстом или в Base64. Для RS, PS, ES и EdDSA вставьте открытый ключ в PEM, сертификат X.509, JWK или весь JWKS либо загрузите JWKS по адресу: нужный ключ найдётся по
kid.
Какие алгоритмы поддерживаются
- HMAC — HS256, HS384, HS512: общий секрет (текст или Base64).
- RSA — RS256, RS384, RS512, PS256, PS384, PS512: открытый ключ RSA: PEM, PKCS#1, сертификат, JWK.
- ECDSA — ES256, ES384, ES512: открытый ключ EC P-256, P-384 или P-521.
- EdDSA — Ed25519: открытый ключ Ed25519, если его поддерживает браузер.
Подпись проверяется встроенным в браузер WebCrypto API. Мы сверили результат с примерами из RFC 7515, с токенами jwt.io и с токенами, подписанными Python-библиотекой cryptography, по каждому алгоритму из таблицы.
Частые ошибки с JWT
- Доверять payload без проверки подписи. Расшифровать — не значит проверить: сервер должен на каждом запросе проверять подпись,
exp,issиaud. - Принимать
alg: noneили разрешать токену самому выбирать алгоритм. Ожидаемый алгоритм надо жёстко задать на сервере. - Короткий секрет HS. RFC 7518 требует ключ не короче хеша: 32 байта для HS256, 64 для HS512. Короткий секрет подбирается перебором офлайн.
- Персональные данные в payload. Email, телефон или адрес в JWT прочитает любой, кто увидит токен, включая расширения браузера и логи.
- Миллисекунды в
exp. Время в JWT — в секундах. Значение вроде1735689600000означает 56 971 год, и токен не истечёт никогда.
Частые вопросы
Безопасно ли вставлять сюда рабочий токен?
Декодер работает целиком в браузере: токен, секрет и ключи не уходят на сервер, не попадают в адрес страницы и в аналитику. Ничего не сохраняется, если не отметить «Запомнить». Но рабочий токен — это как пароль, поэтому по возможности проверяйте истёкшие или тестовые.
Чем расшифровка JWT отличается от проверки?
Расшифровка только читает части в Base64URL и показывает JSON. Проверка заново вычисляет подпись секретом или открытым ключом и подтверждает, что header и payload не меняли. Токен может нормально расшифроваться и при этом иметь неверную подпись.
Почему «Подпись неверна», хотя токен работает в приложении?
Чаще всего секрет в другой кодировке: переключитесь между «Текст» и Base64. Для токенов RS и ES проверьте, что открытый ключ соответствует kid из header. Для HS256, HS384 и HS512 секрет должен совпадать с серверным побайтно, включая переводы строк.
Можно ли проверить токен через JWKS по адресу?
Да. Вставьте адрес JWKS (например, /.well-known/jwks.json) и нажмите «Загрузить ключи». Это единственный сетевой запрос самого инструмента, и только по этой кнопке. Если сервер не разрешает запросы из браузера (CORS), откройте адрес сами и вставьте JSON в поле ключа.
Можно ли создать JWT этим инструментом?
Да, на вкладке «Энкодер». Отредактируйте JSON header и payload, выберите HS256, HS384 или HS512 и введите секрет. Кнопки ставят iat на текущее время и exp на час вперёд. Готовый токен можно скопировать или открыть в декодере.
Поддерживаются ли зашифрованные токены (JWE)?
Нет. В JWE пять частей, и payload зашифрован, поэтому без ключа расшифровки его не прочитать. Декодер распознаёт такие токены и сообщает об этом.