Декодер JWT

Разбор JWT на заголовок, тело и подпись, срок действия токена и проверка подписи ключом.

Данные обрабатываются в браузере и никуда не отправляются

Здесь появится содержимое токена

Вставьте JWT слева или откройте пример - заголовок, тело и срок действия разберутся сразу

Как пользоваться

Вставьте JWT в левое поле или откройте пример - токен разберётся сразу, без кнопок: заголовок и тело покажутся в виде отформатированного JSON, даты (iat, nbf, exp) - в понятном виде в UTC и по вашему времени, а срок действия обновляется каждую секунду. Префикс Bearer, кавычки и переносы строк внутри токена убираются автоматически.

Чтобы проверить подпись, вставьте ключ: для HS256/384/512 - общий секрет (строкой или JWK с kty: oct), для RS/PS/ES - открытый ключ в формате PEM («-----BEGIN PUBLIC KEY-----») или JWK; закрытый ключ (PKCS#8 или JWK) тоже подойдёт - из него возьмётся открытая часть. Проверка идёт средствами браузера (WebCrypto - встроенная криптография браузера), ключ и токен никуда не отправляются.

Частые ошибки

Вот что чаще всего путают при работе с JWT:

JWT не зашифрован

Заголовок и тело - это просто Base64URL от JSON, прочитать их может кто угодно без ключа. Не кладите в токен пароли, номера карт и другие секреты. Подпись защищает от подделки, но не от чтения.

Декодирование - это не проверка

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

alg: none

Токен с алгоритмом none не подписан: его содержимое может сочинить кто угодно. Сервер должен принимать только те алгоритмы, которые он ожидает, и никогда не ориентироваться на alg из токена вслепую.

Время в секундах, а не в миллисекундах

exp, nbf и iat - это секунды с 1 января 1970 (UTC). Если библиотека записала миллисекунды (значение вроде 1767225600000), дата получается в далёком будущем, и токен «никогда не истекает». Инструмент предупреждает о таком значении.

Токен «просрочен» из-за часов

Если часы сервера и клиента расходятся, свежий токен может оказаться ещё «не действующим» (nbf, iat) или уже истёкшим. Серверы обычно допускают небольшой разброс - несколько секунд или минут.

Обычный Base64 вместо Base64URL

В JWT используется Base64URL: символы «-» и «_» вместо «+» и «/» и без «=» в конце. Токен, собранный обычным Base64, строгие библиотеки отклонят; инструмент его прочитает, но предупредит.

Секрет и открытый ключ - не одно и то же

HS-алгоритмы подписываются и проверяются одним общим секретом, RS/PS/ES - подписываются закрытым ключом, а проверяются открытым. Подставить открытый ключ вместо секрета HS-токена - классическая атака подмены алгоритма, поэтому инструмент такую проверку не выполняет.

Частые вопросы

Отправляется ли мой токен или ключ на сервер?

Нет - 100%. Сайт целиком статический, у него нет серверной части, которая могла бы принять токен. Разбор и проверка подписи выполняются в вашем браузере, а токен и ключ не передаются ни нам, ни третьим лицам. Можно вставлять любые токены, в том числе боевые.

Какие алгоритмы подписи поддерживаются?

HS256/384/512, RS256/384/512, PS256/384/512 и ES256/384/512. EdDSA и экзотические алгоритмы разобрать можно, но проверить подпись нельзя - браузерная криптография их не поддерживает.

Почему написано «Подпись не проверена»?

Без ключа проверить подпись невозможно. Укажите ключ в поле слева, и результат появится сразу.

Можно ли расшифровать токен с пятью частями?

Нет. Такие токены (JWE) зашифрованы, и без ключа расшифровки их содержимое прочитать нельзя. Инструмент распознаёт такой токен и сообщает об этом.

Как проверить подпись RS256, если у меня только сертификат?

Извлеките открытый ключ командой openssl x509 -in cert.pem -pubkey -noout и вставьте результат («-----BEGIN PUBLIC KEY-----»). Сертификат целиком инструмент не читает.

Можно ли дать ссылку на готовый пример?

Да, добавьте к адресу страницы параметр ?example=hs256, ?example=expired или ?example=error - откроется страница с токеном и ключом из примера.

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

Курс «Проектирование API и интеграций»

Глубокое погружение в REST, gRPC, SOAP, проектирование баз данных и брокеры сообщений (Kafka, RabbitMQ). Делегирование рутины нейросетям (ИИ). Перестанете бояться технических собеседований и начнете говорить с разработчиками на одном языке. Курс собран так, чтобы пробить зарплатный потолок и вырасти в грейде - ученики тому подтверждение.

Перейти к курсу на Stepik