Услуги Портфолио Контакты БлогНовости +7 (961) 872‑20‑27 Обсудить проект

JWT декодер: расшифровка, проверка подписи и сборка токена

Вставьте токен: покажем header, payload и claims понятным языком, скажем, не истёк ли он, и проверим подпись. Токен, секрет и ключи не покидают ваше устройство.

Работает в браузере: токены и ключи не покидают ваше устройствоБесплатноБез регистрации

Токен, секрет и ключи обрабатываются только на этой странице: никуда не отправляются, не попадают в адрес страницы и в аналитику.

header · payload · signature

Проверка подписи

Алгоритм: —

Проверки

    Header

    Payload

    Claims

    Делаете 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

    1. Вставьте токен в поле «Токен». Префикс Bearer и переносы строк убираются сами. Три части подсвечены разными цветами: header, payload, signature.
    2. Посмотрите результат. Header и payload показаны в виде отформатированного JSON. Блок Claims переводит exp, iat и nbf в даты по UTC и в вашем часовом поясе и пишет «истёк 10 минут назад» или «истекает через 3 часа».
    3. Проверьте предупреждения. Инструмент отмечает alg: none, истёкший или ещё не действующий токен, отсутствие exp, время в миллисекундах и поля, похожие на персональные данные.
    4. Проверьте подпись. Для 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 зашифрован, поэтому без ключа расшифровки его не прочитать. Декодер распознаёт такие токены и сообщает об этом.

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