Tarayıcınız güncel değil

Bu siteyi görüntülemek için tarayıcınızın veya cihazınızın işletim sisteminin güncellenmesi gerekiyor.

Your browser is out of date. Please update iOS or your browser to view this site.

Перейти к основному содержимому
Gizke.com
Блог

Декодер JWT

Работает на устройстве. Ничего не отправляется.

Декодируйте и изучайте JSON Web Token полностью в браузере - заголовок, payload, срок действия и необязательная проверка подписи - ничего никуда не загружается.

JSON Web Token (JWT) - компактный, безопасный для URL способ представления claim'ов между двумя сторонами - используется повсюду: от заголовков "Authorization: Bearer ..." до сессионных cookie и единого входа (SSO). JWT - это всего лишь три закодированные в base64url части (заголовок, payload, подпись), соединённые точками, поэтому любой может декодировать и прочитать заголовок и payload, не имея ключа подписи - только проверка подписи требует секрет или закрытый ключ. Этот инструмент декодирует обе части локально в вашем браузере, объясняет стандартные claim'ы, отмечает истёкший или ещё недействительный токен и предупреждает о ловушке безопасности алгоритма "none" - ваш токен никуда не отправляется.

Часто задаваемые вопросы

Отправляется ли мой JWT на сервер?
Нет. Декодирование полностью происходит в вашем браузере с помощью веб-API atob и TextDecoder - токен, а также любой секрет или открытый ключ, вставленный для проверки подписи, никогда не покидают ваше устройство.
Может ли этот инструмент проверить подпись?
Да, как бонус "по возможности". Если вы знаете секрет HMAC (для HS256/384/512) или вставите открытый ключ в формате PEM (для RS256/384/512 или ES256/384/512), инструмент проверит подпись локально с помощью Web Crypto API браузера. Без ключа декодируются и показываются только заголовок и payload - само декодирование никогда не требует ключа подписи.
Почему алгоритм указан как "none"?
"alg": "none" означает, что токен вообще не подписан - кто угодно мог записать в него любые claim'ы. Некоторые библиотеки исторически принимали такие неподписанные токены как валидные, что стало известным способом обхода аутентификации. Этот инструмент всегда заметно отмечает это, чтобы вы не пропустили.
Что означают exp, iat и nbf?
Это стандартные claim'ы времени из RFC 7519: iat указывает, когда токен был выдан, nbf - самый ранний момент, когда он становится действительным, а exp - когда он перестаёт быть таковым. Все три хранятся как NumericDate - количество секунд с начала эпохи Unix - которое этот инструмент преобразует в читаемую дату и относительное время вроде "истекает через 2 часа".
Почему я могу прочитать payload без секрета?
Потому что заголовок и payload JWT только закодированы в base64url, а не зашифрованы - кодирование не равно секретности. Любой, у кого есть токен, уже может прочитать его claim'ы; подпись лишь доказывает, что они не были изменены тем, у кого нет ключа. Никогда не помещайте в payload JWT то, что не должно быть прочитано злоумышленником напрямую.
У моего токена 3 части, но он всё равно не декодируется - почему?
Каждый из трёх сегментов (заголовок, payload, подпись) должен быть корректным текстом base64url, а заголовок и payload должны декодироваться в корректный JSON. Этот инструмент декодирует заголовок и payload независимо друг от друга и точно сообщает, какой из них повреждён и почему (плохой base64, плохой UTF-8 или некорректный JSON), вместо того чтобы просто молча завершиться неудачей.
Для разработчиков: откройте эту страницу с параметром `token` в URL - например, gizke.com/jwt?token=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIn0.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c - и этот токен будет подставлен автоматически. Большинству посетителей это не понадобится; предназначено для прямой ссылки на готовый пример.

Поделиться инструментом

БлогО проектеКонтактыУсловия использованияПолитика конфиденциальности