Структура и формат JSON Web Token
JSON Web Token (JWT) представляет собой компактный и безопасный для передачи в URL-адресах формат представления заявок (claims) между двумя сторонами. Токен состоит из трех частей, которые разделены точками. Каждая часть закодирована с использованием алгоритма Base64URL:
- Заголовок (Header): содержит метаданные о токене, включая тип токена и используемый алгоритм шифрования или подписи.
- Полезная нагрузка (Payload): содержит непосредственно передаваемые утверждения (claims), такие как идентификатор пользователя, роли или время жизни токена.
- Подпись (Signature): создается путем хэширования заголовка и полезной нагрузки с использованием секретного ключа или пары ключей, что позволяет проверить целостность данных.
Для работы с токеном в текстовом поле ввода инструмент анализирует эту трехчастную структуру. Если входная строка пуста, инструмент находится в состоянии «Готово. Вставьте JWT для декодирования.». В случае ввода некорректных данных, не соответствующих структуре, отображается ошибка «Некорректный формат JWT — токен должен состоять из трех частей, разделенных точками.». При вводе избыточно длинной строки выводится сообщение «Строка слишком длинная для настоящего JWT.».
Декодирование заголовка и полезной нагрузки
Каждая из первых двух частей JWT после декодирования из формата Base64URL должна представлять собой валидный JSON-объект. Заголовок обычно содержит следующие стандартные параметры:
alg: определяет алгоритм, применяемый для создания подписи (например, HS256 или RS256).typ: указывает тип токена, который в данном случае имеет значениеJWT.
Полезная нагрузка содержит утверждения, которые делятся на зарезервированные, публичные и приватные. К зарезервированным относятся временные метки, определяющие жизненный цикл токена.
Если в процессе обработки Base64URL возникают ошибки, инструмент скрывает области декодирования и выводит соответствующие предупреждения: «Не удалось декодировать заголовок — неверный формат Base64URL.» или «Не удалось декодировать полезную нагрузку — неверный формат Base64URL.». Если декодирование Base64URL прошло успешно, но структура данных нарушена, отображаются ошибки «Заголовок не является валидным JSON.» или «Полезная нагрузка не является валидным JSON.».
Временные параметры и статус токена
Жизненный цикл JWT регулируется специальными числовыми утверждениями в полезной нагрузке, которые выражаются в секундах (Unix time):
iat(Issued At): время выпуска токена.exp(Expiration Time): время окончания действия токена, после которого он становится недействительным.
Инструмент извлекает эти параметры и сопоставляет их с текущим временем для определения статуса токена. На основе анализа утверждения exp выводится один из следующих статусов:
- Действителен: текущее время находится в промежутке между временем выпуска и временем окончания действия.
- Истек: текущее время превышает значение, указанное в
exp. - Еще не действителен: токен содержит параметры, указывающие на то, что его время действия еще не наступило.
- Срок не указан: в полезной нагрузке отсутствует утверждение
exp.
При успешном разборе токена интерфейс отображает количество символов во входной строке в поле «Символы», а также выводит декодированные JSON-структуры в полях «Заголовок (Header)» и «Полезная нагрузка (Payload)».
Разница между декодированием и верификацией
Декодирование JWT — это исключительно процесс преобразования Base64URL-строки в читаемый текстовый формат JSON. Декодирование не подтверждает подлинность токена. Любой субъект, перехвативший токен, может декодировать его содержимое, так как Base64URL не является шифрованием.
Верификация, в отличие от декодирования, требует проверки подписи токена с использованием секретного симметричного ключа или публичного асимметричного ключа. Верификация гарантирует, что данные в заголовке и полезной нагрузке не были изменены после выпуска токена. Данный инструмент не проверяет подпись токена, не запрашивает секретный ключ или публичный ключ и выполняет исключительно функцию декодирования для быстрого анализа структуры данных.
Конфиденциальность при работе с токенами
Обработка и декодирование JWT осуществляются локально. Ваш токен декодируется прямо в браузере. Данные не отправляются на BroBroGo. Это исключает передачу содержимого токенов, которые могут содержать идентификационные данные пользователей, через внешние серверы. При нажатии кнопки «Очистить» все данные удаляются из интерфейса, а фокус ввода возвращается в исходное текстовое поле.
Часто задаваемые вопросы
Безопасно ли вставлять сюда мой JWT?
Да. Декодирование происходит полностью в вашем браузере — ваш токен никогда не отправляется на серверы BroBroGo.
Проверяет ли этот инструмент подпись токена?
Нет. Инструмент только декодирует заголовок и полезную нагрузку для чтения. Для проверки подписи требуется секретный ключ или публичный ключ, которые этот инструмент никогда не запрашивает.
Как узнать, истек ли срок действия моего токена?
Декодер считывает утверждение exp и отображает статус рядом с декодированным токеном: действителен, истек, еще не действителен или срок действия не указан.