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

JWT Декодер

Прочитайте клеймы токена и докажите его подпись · работает в этой вкладке и никуда не отправляется

Токен

Вставьте токен, чтобы прочитать его

Подпись

JWT закодирован, а не зашифрован — любой, у кого есть этот токен, прочитает всё вышеперечисленное без всякого ключа. Только проверка подписи говорит, что он подлинный и не изменён.

Не проверена

Клеймы

Вставьте токен в панель «Токен», и его клеймы появятся здесь, простыми словами.

Заголовок

Полезная нагрузка

Как работает JWT Декодер

JWT-декодер, который разбивает токен на три части, декодирует заголовок и полезную нагрузку и перечисляет каждый клейм простыми словами — со сроком действия, «не ранее» и временем выпуска в виде настоящих дат, а не секунд с 1970 года. Он также проверяет подпись: вставьте общий секрет для алгоритма семейства HS или открытый ключ для RS, PS либо ES, и проверка выполнится на собственном WebCrypto вашего браузера. Ни токен, ни ключ никуда не отправляются, а ключ даже не сохраняется в этом браузере.

Вставьте токен — с префиксом Bearer или без него — и он разделится на три части, подсвеченные цветом, чтобы было видно, где заканчивается каждая. Заголовок и полезная нагрузка декодируются в JSON, а клеймы перечисляются ещё раз простыми словами: exp, nbf и iat показаны как настоящие даты и как «сколько прошло» или «сколько осталось».

Декодировать JWT — не значит его проверить. Первые две части — это base64url, а не шифрование: любой, у кого есть токен, их прочитает, и именно поэтому в токене никогда не место секретам. Включите Проверить подпись и вставьте общий секрет для алгоритма семейства HS или открытый ключ для RS, PS или ES — и подпись будет действительно проверена: HS256/384/512, RS256/384/512, PS256/384/512 и ES256/384/512, средствами собственного WebCrypto браузера.

С ключом, который вы вставляете, обращаются иначе, чем с любым другим вводом на этом сайте: он никогда не записывается в localStorage и не восстанавливается после перезагрузки. Ни токен, ни ключ никуда не отправляются, и нет сервера, который мог бы их получить.

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

Безопасно ли вставлять настоящий JWT в этот декодер?

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

Если JWT декодировался, значит ли это, что он действителен?

Нет, и разница существенна. Заголовок и полезная нагрузка закодированы в base64url, а не зашифрованы, поэтому любой обладатель токена может их прочитать — вот почему в JWT никогда не место секретам. Только проверка подписи правильным ключом говорит, что токен подлинный, не изменён и его клеймам можно доверять.

Какие алгоритмы подписи он умеет проверять?

HS256, HS384 и HS512 с общим секретом, а также RS256/384/512, PS256/384/512 и ES256/384/512 с открытым ключом в виде PEM-блока, отдельного JWK или целого JWKS — в последнем случае ключ выбирается по kid токена. Проверка использует встроенный в браузер WebCrypto, поэтому ключевой материал никуда не передаётся.

Сохраняется ли мой ключ или секрет подписи?

Нет. Все остальные инструменты сайта сохраняют ваш ввод в localStorage, чтобы перезагрузка не потеряла работу; ключ проверки намеренно исключён. Он хранится в памяти, используется для проверки и исчезает, когда вы покидаете страницу.

Почему мой токен показан как истёкший?

Клейм exp — это NumericDate, секунды с 1970 года, и декодер показывает его настоящей датой рядом с тем, сколько времени прошло. Истёкший токен — самая частая причина внезапного 401 от API, которое работало мгновение назад. Клейм nbf в будущем делает то же самое с другого конца.