Декодер и проверка JSON Web Token
Три сегмента base64url, подпись, которая либо настоящая, либо нет, и окно действия, которое либо включает текущий момент, либо нет. Инструмент отвечает на все три вопроса офлайн и называет точную причину, когда ответ отрицательный.
Ключ используется криптографией браузера в этой вкладке и никуда не отправляется.
Как это работает
Вставьте токен
Вставьте его или перетащите файл — даже строку лога: токен будет извлечён. Он сразу разбивается, декодируется и проверяется на дефекты формата.
Добавьте ключ
Общий секрет текстом, в base64 или hex, открытый ключ PEM, JWK или целый JWKS — запись по kid токена подбирается сама.
Проверьте
Нажмите кнопку: считает криптография самого браузера. Вы получите «верна», «неверна» или точную причину, почему ключ не подошёл, — но не пожатие плечами.
Идите дальше
Сверьте claim-ы с ожиданиями вашего сервиса, подпишите новый токен в конструкторе или передайте нагрузку другому инструменту набора.
Подписи проверяются по-настоящему
HS256/384/512, RS, PS и ES — включая ES512 на P-521 — проверяет Web Crypto самого браузера. Ни сервера, ни библиотеки, ни загрузки.
Claim-ы оцениваются, а не просто показываются
exp, nbf и iat с заданным вами допуском часов, плюс издатель, аудитория и субъект, которых ждёт ваш сервис. Каждая проверка проходит, падает или пропускается — и сообщает об этом.
Видимый срок жизни
Обратный отсчёт идёт только когда есть что отсчитывать, а полоса показывает, где сейчас между nbf и exp.
Подписывайте токены, а не только читайте
Отредактируйте заголовок и нагрузку, выберите алгоритм, подпишите. Результат сразу открывается в разборе, чтобы проверить только что созданное.
Любой формат ключа
Секрет текстом, в base64 или hex; открытые ключи PEM; отдельный JWK; или целый JWKS, где запись по kid выбирается сама.
Атаки названы вслух
alg: none, пустая подпись, нагрузка, которая является корректным JSON, но не объектом, base64, переживший URL, — каждый случай назван своим именем.
Ничего не загружается
Токен и ключ использует криптография этой вкладки, и с её закрытием они исчезают. Отправлять их некуда: серверной части нет.
Передача остальным инструментам
Отправьте claim-ы прямо в JSONFlow, DiffSnap, Base64Bolt или Hash Bolt — без скачивания и повторной загрузки.
Декодер, который умеет говорить «нет»
Вставьте токен, чтобы прочитать его, добавьте ключ, чтобы это доказать. Настоящая проверка подписи криптографией самого браузера, проверка claim-ов против ожиданий вашего сервиса и конструктор, который подписывает токены обратно.
Криптография уже была в браузере
Web Crypto — это полная реализация HMAC, RSASSA-PKCS1-v1_5, RSA-PSS и ECDSA, и она бесплатно есть в каждом браузере. Декодирование, проверка подписи, проверки claim-ов и подпись идут через неё, в этой вкладке, без единого запроса наружу.
Для настоящей отладки, а не для демо
Вопросы, которые возникают в три часа дня: этот 401 из-за истёкшего токена или из-за неверного ключа на шлюзе? Клиент прислал ту аудиторию, которую ждёт API? Этот kid ещё есть в JWKS? Вставьте токен, вставьте набор ключей — и получите ответ с причиной, в том числе для токенов, которые не просто недействительны, а сломаны.
JWT обычно несёт личность, а секрет подписи — это то, чем такие токены чеканят. Ни то, ни другое отсюда никуда не уходит: у инструмента нет серверной части, нет аккаунта, нет аналитики по тому, что вы вставили. Закройте вкладку — и оба исчезнут, ведь память этой вкладки была единственным местом, где они существовали.
Часто задаваемые вопросы
QМой токен или ключ куда-то загружаются?+
Нет. Декодирование, проверка подписи и подписание выполняются в вашем браузере через Web Crypto API. Серверной части, куда что-то можно отправить, нет, и между визитами ничего не сохраняется.
QОн действительно проверяет подпись?+
Да, ради этого и сделана эта версия. Вставьте общий секрет для HS256/384/512 либо открытый ключ PEM, JWK или JWKS для RS, PS и ES. Браузер считает, а вердикт — «верна», «неверна» или названная причина, по которой ключ не подошёл.
QКакие алгоритмы поддерживаются?+
HS256, HS384, HS512, RS256, RS384, RS512, PS256, PS384, PS512, ES256, ES384 и ES512, плюс EdDSA там, где браузер даёт Ed25519. ES512 использует P-521, как того требует спецификация.
QЧто происходит с alg: none?+
Такой токен помечается как незащищённый, и проверка всегда его отклоняет. Токен без подписи — ровно та атака, ради которой эта проверка и существует, поэтому зелёной галочки он не получает никогда.
QМожно ли создать токен, а не только прочитать?+
Да. На вкладке создания можно править заголовок и нагрузку, выбрать алгоритм, тут же сгенерировать секрет или пару ключей RSA/EC и подписать. Результат сразу открывается в разборе, чтобы вы проверили то, что сделали.
QЧто делают проверки claim-ов?+
Они сравнивают токен с тем, чего потребовал бы верификатор: exp, nbf и iat с заданным допуском часов, необязательный максимальный возраст, а также издатель, аудитория и субъект, которых ждёт ваш сервис. Каждая строка проходит, падает или пропускается, если вы её не запрашивали.