JWT Decoder: разобрать токен

Разобрать JWT-токен на header, payload и signature: покажет alg, typ и kid, переведёт iat, exp и nbf в даты, проверит срок действия и объяснит поля токена.

Что делаем

Разбор читает части токена, сборка составляет строку заново

Серверы сверяют exp в UTC — выберите UTC, если сравниваете с логами сервера

JWT-токен

Учебные токены: сроки у них считаются от текущего момента, поэтому состояния «действует» и «истёк» видно всегда

Вставьте токен целиком — три части, разделённые точками. Кавычки, переносы строк и префикс «Bearer » убираются сами

Разбор токена

Пока разбирать нечего: вставьте токен в поле выше или нажмите «Пример». Разбор появится сразу, как только в строке окажутся три части.

Зачем разбирать JWT-токен

JWT смотрят по двум поводам. Первый — отладка интеграции: какой алгоритм и ключ подписали токен, что положили в payload, какие права выдали, что записали в iss и aud, почему сервер видит пользователя не тем, кем он себя считает. Второй — разбор инцидента: «через час работы всё отваливается с 401» почти всегда означает, что истёк exp, а секунды Unix, посчитанные глазами, ничего не говорят.

Инструмент показывает header, payload и signature по отдельности, подписывает alg, typ и kid из заголовка, переводит временные метки в даты и в «сколько осталось», проверяет просроченность и объясняет стандартные поля токена по-русски. В таблице временных меток видно все сроки сразу — iat, nbf, exp и нестандартные поля вида updated_at, — а обратный режим собирает токен из отредактированных частей, чтобы правку можно было увидеть в строке.

Подпись не проверяется: для этого нужен ключ сервиса, которого у страницы нет. Поэтому данные из токена — заявление, а не доказательство, и решение о доверии принимает только ваш сервер. Весь разбор идёт в браузере, токен никуда не отправляется.

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

Что такое JWT и можно ли его расшифровать?

JWT — токен из трёх частей, разделённых точками: header с алгоритмом подписи, payload с данными и signature. Первые две части — JSON, записанный в Base64URL, и прочитать их может любой, у кого есть токен: это кодирование, а не шифрование. Расшифровать payload нельзя только в JWE — токене из пяти частей, где всё, кроме заголовка, действительно зашифровано ключом.

Как проверить, истёк ли срок действия токена?

Вставьте токен в поле — инструмент переведёт exp в дату и сравнит с текущим временем. Над результатом появится плашка: «Токен действует» с обратным отсчётом или «Срок действия истёк» с указанием, сколько времени прошло. В таблице временных меток у каждого срока свой статус: действует, истёк или ещё не действует.

Инструмент проверяет подпись токена?

Нет, и не может: для проверки нужен секретный ключ (для HS256) или публичный ключ сервиса (для RS256), а он есть только у вашего сервиса. Страница декодирует части и разбирает поля. Поэтому payload — это то, что токен о себе заявляет, а не то, что подтверждено: доверять данным можно только после проверки подписи на сервере.

Токен состоит не из трёх частей — что это значит?

Пять частей — это JWE: в нём зашифровано всё, кроме заголовка, и payload без ключа не прочитает никто. Инструмент покажет заголовок JWE и размеры остальных частей. Одна, две или четыре части означают, что токен скопирован не полностью или в него попал лишний символ — инструмент скажет, какой части не хватает.

Что означают поля iat, nbf и exp?

Это временные метки в секундах Unix. iat — когда токен выдан, nbf — раньше какого момента он не принимается, exp — после какого момента он недействителен. Инструмент показывает каждое значение и датой, и относительно текущего момента: например «истекает через 2 часа 13 минут».

Зачем собирать токен обратно и подойдёт ли он для сервера?

Сборка нужна, чтобы понять устройство токена и посмотреть, как выглядят правки в частях: header и payload редактируются, а строка собирается заново. Подпись при этом не пересчитывается — без ключа её не посчитать, — поэтому такой токен не пройдёт проверку подписи на настоящем сервере. Он годится для разбора и обучения, а не для подделки доступа.

Данные из токена отправляются на сервер?

Нет. Разбор идёт на JavaScript прямо в браузере: токен никуда не передаётся, не пишется в логи и не сохраняется, страница работает и без сети. Для токенов от рабочих сервисов это важное свойство: вставляя их в сторонние онлайн-декодеры, которые считают токен на своём сервере, вы отдаёте чужому сервису готовый пропуск в свою систему.