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 в будущем делает то же самое с другого конца.