Инструменты JWT для разработчиков Декодировать, кодировать и проверять срок действия токена

Опубликовано

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

Инструменты JWT для разработчиков: декодирование, кодирование и проверка срока действия токена 1
Реклама · УДАЛИТЬ?

Каждый бэкенд-разработчик сталкивался с такой ситуацией: в консоли появляется ошибка 401 Unauthorized, и начинается борьба. Вышло ли истечение токена? Использовался ли неверный секрет? Потерял ли пакет какое-либо утверждение при передаче между сервисами? JWT (JSON Web Tokens) — это связующее звено современной аутентификации, и когда они ломаются, всё за аутентификационным экраном гаснет.

Проблема не в том, что JWT сложны. Их структура на самом деле проста: три сегмента, закодированные в формате base64url и соединённые точками — заголовок, тело, подпись. Проблема в том, что сырой токен, как eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyXzEyMyIsInJvbGUiOiJhZG1pbiIsImV4cCI6MTc0NjA5NjAwMH0.mK2xVpQ8nZ3aF7tLdRhW6sYbcXeUoIPjNvGqTmAS1kE не даёт никакой информации, пока вы его не декодируете. И декодирование — быстро, в браузере, без установки каких-либо программ — именно то, что эти три бесплатных инструмента решают.

Этот гайд охватывает полный цикл работы с JWT: декодирование токена для проверки содержимого, кодирование токена для имитации аутентификации в тестах и проверка срока действия для диагностики ошибок таймаута. Каждая часть использует тот же фейковый токен, чтобы вы могли следить за процессом от начала до конца.

Инструмент 1 — JWT Decoder: Мгновенное просмотр содержимого любого токена

The декодер JWT принимает любой токен и разбивает его на три компонента, декодируя заголовок и тело из base64url в понятный JSON.

Вставьте пример токена выше и вы увидите заголовок, декодированный в:

{
  "alg": "HS256",
  "typ": "JWT"
}

И тело:

{
  "sub": "user_123",
  "role": "admin",
  "exp": 1746096000
}

Это exp поле — это Unix-временная метка. На первый взгляд она ничего не значит — но декодер переводит её в человеко-понятную дату, чтобы вы сразу знали, действителен ли токен или он уже устарел.

Важно понимать: декодер не проверяет подпись по умолчанию. Проверка подписи требует секрета (для HS256) или публичного ключа (для RS256/ES256). То, что даёт декодер — это декодированное содержимое, которое вам нужно при отладке 401-ошибки, при проверке включённых утверждений или при анализе токена от стороннего провайдера идентичности.

Замечание: тело JWT закодировано в формате base64url, а не зашифровано. Любой инструмент (или человек) с токеном может прочитать тело без секрета. Подпись подтверждает, что токен не был изменён. Именно поэтому вы не должны хранить чувствительные данные — пароли, номера кредитных карт, SSN — в теле JWT.

Инструмент 2 — JWT Encoder: Создание токенов для тестирования

The JWT encoder делает обратное: вы предоставляете JSON-тело, выбираете алгоритм (по умолчанию HS256), вводите секрет, и инструмент генерирует подписанный токен, который вы можете сразу использовать.

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

{
  "sub": "test_user_001",
  "role": "editor",
  "iat": 1746009600,
  "exp": 1746096000
}

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

Инструмент encoder также полезен при создании нового сервиса и желании вручную тестировать, как он обрабатывает определённые комбинации утверждений: отсутствующие роли, истекшие токены, непредвиденные скопы. Генерируйте токены с крайними случаями и бросайте их в миддлвар, чтобы увидеть, как он реагирует.

Если вам нужно понять сам процесс base64url-кодирования — поскольку тело JWT просто закодировано, а не зашифровано — инструмент base64 decoder позволяет вручную декодировать любой из сегментов. Вставьте среднюю часть любого токена (сегмент тела) в декодер base64 и вы получите исходный JSON. То же самое, пошагово.

Инструмент 3 — JWT Expiry Checker: Отладка 401-ошибок без математических расчётов

Срок действия токена отвечает за большую часть аутентификационных сбоев в продакшене. Инструмент проверщик истечения JWT принимает любой токен и сразу сообщает: истёк ли он? Если да, то на сколько?

Вставьте пример токена и проверщик извлечёт exp поле, преобразует его из Unix-временной метки в понятную дату и сравнивает с текущим временем. Вы получаете ясный статус: действителен (с оставшимся временем) или истёк (на сколько времени назад).

Это важно больше, чем кажется. Когда в продакшене появляется ошибка 401, первое, что задаётся — «истёк токен или что-то другое не так?». Ответ на этот вопрос с помощью устного расчёта Unix-временной метки — 1746096000 - current_time / 3600 — тратит время и вводит ошибки. Проверщик срока действия даёт ответ за один ввод.

Он также показывает iat (время выпуска) метку, если она присутствует, чтобы вы могли увидеть, когда был сгенерирован токен и как долго активна сессия. Полезно при отладке ошибок обновления токена или при поиске причины, почему долгосрочная сессия резко прервалась.

Сборка инструментов: типичный процесс отладки

Вы получаете 401. Вот самый быстрый путь от ошибки к решению:

  1. Проверьте срок действия сначала. Вставьте токен в 2. Понимание алгоритма. Если он истёк, решение — обновление токена, дальнейшая отладка не требуется.
  2. Проверьте тело. Если токен ещё действителен, вставьте его в декодер JWT. Проверьте утверждения: верно ли значение sub ? Налично ли ожидаемое role или scope ? Правильно ли указано поле (aud) для конечного пункта, на который вы обращаетесь?
  3. Повторите с помощью кастомного токена. Если вы подозреваете, что конкретная комбинация утверждений вызывает отклонение, создайте токен с помощью encoder и протестируйте напрямую. Это позволит определить, вызывает ли несоответствие содержимого утверждений или сама структура токена сбой.

Три инструмента, за минуту, без установки. Большинство ошибок 401, связанных с JWT, решаются на шаге 1 или 2.

Хотите убрать рекламу? Откажитесь от рекламы сегодня

Установите наши расширения

Добавьте инструменты ввода-вывода в свой любимый браузер для мгновенного доступа и более быстрого поиска

в Расширение Chrome в Расширение края в Расширение Firefox в Расширение Opera

Табло результатов прибыло!

Табло результатов — это интересный способ следить за вашими играми, все данные хранятся в вашем браузере. Скоро появятся новые функции!

Реклама · УДАЛИТЬ?
Реклама · УДАЛИТЬ?
Реклама · УДАЛИТЬ?

новости с техническими моментами

Примите участие

Помогите нам продолжать предоставлять ценные бесплатные инструменты

Купи мне кофе
Реклама · УДАЛИТЬ?