Перейти к содержимому

Расшифровать и проверить JWT

Расшифруйте заголовок и данные JSON Web Token, проверьте срок действия и подпись. Токен не покидает ваш браузер.

Декодирование и проверка выполняются в этой вкладке — токен и ключи никуда не отправляются.

Заголовок, claims и срок действия появятся здесь, когда вы вставите токен.
Работает в браузере · без загрузки на серверКак это работает

Как пользоваться: JWT-декодер

  1. 1

    Вставьте токен

    Вставьте JWT из заголовка Authorization, из cookie или из хранилища приложения; начальное «Bearer » игнорируется.

  2. 2

    Изучите claims

    Посмотрите таблицы заголовка и payload, понятное время exp, iat и nbf и баннер о сроке действия.

  3. 3

    Добавьте ключ

    Введите секрет HMAC или вставьте открытый ключ в формате PEM, сертификат, JWK или JWKS.

  4. 4

    Проверьте подпись

    Нажмите «Проверить подпись», чтобы убедиться, что токен подписан этим ключом и не был изменён.

Лимиты и Pro

Бесплатно, без регистрации и без ограничений на количество токенов; проверка поддерживает 13 алгоритмов (HS, RS, PS и ES с длиной 256, 384 и 512 бит, а также EdDSA).

Pro убирает рекламу; декодирование и проверка работают одинаково на любом тарифе. Смотреть Pro

О инструменте «JWT-декодер»

JSON Web Token (JWT) — это три строки в Base64URL, соединённые точками: заголовок с алгоритмом подписи, payload с утверждениями (claims) и подпись. Вставьте токен — с префиксом «Bearer » или без него — и декодер покажет заголовок и payload в виде удобной таблицы или форматированного JSON, выделит цветом три части токена и объяснит стандартные поля: iss, sub, aud, kid и scope.

Время из токена переводится в понятный вид: exp, iat, nbf и auth_time показываются как дата в вашем часовом поясе, в UTC и как относительное время («истекает через 2 часа», «истёк 3 дня назад»). Баннер сразу сообщает, что токен просрочен, ещё не действует или не имеет срока действия, и предупреждает, если значение exp похоже на миллисекунды вместо секунд.

Декодирование ничего не говорит о том, кто выпустил токен, поэтому подпись проверяется встроенным в браузер WebCrypto. Для HS256, HS384 и HS512 нужен общий секрет (обычный текст или Base64). Для алгоритмов RS, PS и ES с длиной 256, 384 и 512 бит, а также EdDSA с Ed25519 нужен открытый ключ. Его можно вставить как открытый ключ PEM, блок RSA PUBLIC KEY, сертификат X.509, отдельный JWK или целый JWKS — в этом случае ключ выбирается по kid из токена.

Инструмент не расшифровывает токены JWE (из пяти частей) и не загружает JWKS по URL: откройте jwks_uri издателя самостоятельно и вставьте его JSON.

Конфиденциальность

Токен — это предъявительский документ, поэтому страница обращается с ним соответственно: декодирование и проверка подписи выполняются в браузере через WebCrypto, а токен, секрет и ключи не отправляются на сервер, не записываются в журнал и не сохраняются. Если закрыть или перезагрузить вкладку, всё будет удалено.

Возможности

Понятное время

exp, iat и nbf в вашем часовом поясе, в UTC и в виде «через 2 часа» или «3 дня назад».

Настоящая проверка подписи

HMAC, RSA, RSA-PSS, ECDSA и Ed25519 проверяются через WebCrypto по вашему ключу или JWKS.

Токен остаётся у вас

Ничего не загружается на сервер, поэтому боевые токены можно безопасно изучать.

JWT-декодер: частые вопросы

Безопасно ли вставлять сюда боевой токен?
Токен декодируется и проверяется JavaScript-кодом в вашей вкладке, а запросов с ним не отправляется — это можно проверить на панели «Сеть» в браузере. Но действующий токен до истечения срока работает как пароль, поэтому не вставляйте живые токены на сайты, которым не доверяете, а для скриншотов берите просроченные или тестовые.
Почему декодированный токен ничего не доказывает?
Любой может составить заголовок и payload и закодировать их в Base64URL, а декодирование лишь обращает это действие. С издателем токен связывает только подпись. Прежде чем доверять claims, проверьте её открытым ключом издателя или общим секретом и убедитесь, что alg — тот, который ждёт ваш сервер: приём «none» или подменённого алгоритма — классическая уязвимость.
Где взять открытый ключ для проверки токена RS256 или ES256?
Провайдеры удостоверений публикуют ключи в виде набора JWK. Найдите у издателя адрес /.well-known/openid-configuration, откройте указанный в нём jwks_uri и вставьте этот JSON сюда: будет использован ключ, чей kid совпадает с заголовком токена. Также можно вставить открытый ключ PEM или сертификат X.509 издателя.
Что означают exp, iat и nbf?
Это claims типа NumericDate — число секунд с 1 января 1970 года по UTC. exp — момент, когда токен перестаёт действовать, iat — когда он выпущен, а nbf — самое раннее время, с которого его можно принимать. Серверы обычно допускают расхождение часов в минуту-две. Декодер показывает каждое значение как местную дату, время в UTC и относительное время.
Почему проверка не проходит, хотя секрет HMAC верный?
Частые причины: вместе с секретом скопировались пробелы или переводы строк, секрет при подписи был закодирован в Base64 либо токен перекодировал инструмент, изменивший байты заголовка или payload. Попробуйте включить переключатель «Секрет закодирован в Base64». Любое изменение первых двух частей, даже порядка ключей в JSON, делает подпись недействительной.