Как пользоваться
- Скопируйте токен из заголовка Authorization, cookie или инструментов разработчика браузера. Начальная часть «Bearer » удаляется автоматически.
- Вставьте токен в поле. Заголовок и полезная нагрузка отобразятся в виде форматированного JSON.
- Проверьте строку состояния и таблицу утверждений: в них указаны издатель, аудитория и срок действия с учётом вашего часового пояса.
- При необходимости скопируйте JSON заголовка или полезной нагрузки.
Как это работает
JSON Web Token (JWT, RFC 7519) в распространённом формате с подписью (JWS) состоит из трёх частей, закодированных в base64url и разделённых точками. В заголовке указано, каким алгоритмом подписан токен, например HS256 (HMAC с SHA-256) или RS256 (RSA). Полезная нагрузка содержит claims — сведения о пользователе и самом токене. Подпись позволяет серверу проверить, что заголовок и полезная нагрузка не были изменены.
Заголовок и полезная нагрузка только закодированы, но не зашифрованы. Содержимое может прочитать любой, у кого есть токен, — именно это и делает данный инструмент. Не помещайте секреты в полезную нагрузку JWT.
Декодирование ничего не доказывает о токене. Без ключа издателя нельзя определить, подлинна ли подпись, поэтому результат нельзя использовать для решения о том, можно ли доверять токену. Проверку нужно выполнять на сервере с помощью актуальной библиотеки JWT, которая проверяет подпись, алгоритм, exp, nbf, iss и aud.
Зарегистрированные claims описаны в таблице. exp, nbf и iat — значения типа NumericDate: число секунд с 1 января 1970 года по UTC. Инструмент преобразует их в даты вашего часового пояса и сравнивает с часами устройства, не учитывая небольшой допуск, который серверы часто используют из-за расхождения часов. Если часы устройства показывают неверное время, статус тоже будет неверным.
Токены из пяти частей — это зашифрованные JWT (JWE). Без ключа их полезную нагрузку декодировать нельзя, поэтому инструмент только сообщает формат.
Примеры
Почему API возвращает ошибку 401?
Декодируйте токен доступа, который отправляет ваше приложение. Если в строке статуса указано «Срок действия истёк …», клиенту нужно обновить токен. Если aud равен https://api.example.com, а запрос отправляется на https://api2.example.com, аудитория не совпадает.
Проверка ID-токена OpenID Connect
ID-токен от провайдера входа содержит iss (провайдера), sub (постоянный ID пользователя), aud (ID вашего клиента), iat и exp, а также профильные claims, например email и name. Декодирование покажет, какие именно claims получает ваше приложение.
Как прочитать claim с временной меткой
Полезная нагрузка содержит "exp": 1735689600. В таблице claims это значение отображается как 1 января 2025 года, 00:00:00 UTC, преобразованное в местное время, а также указано, сколько времени прошло или осталось.
Часто задаваемые вопросы
Проверяет ли инструмент подпись JWT?
Нет. Инструмент только декодирует заголовок и полезную нагрузку. Для проверки нужен секрет (для HS256) или открытый ключ издателя (для RS256 и ES256). Выполнять проверку следует на сервере с помощью доверенной библиотеки.
Безопасно ли вставлять сюда свой токен?
Токен декодируется в браузере и никуда не отправляется. Однако действующий токен работает как пароль до истечения срока действия, поэтому лучше использовать просроченные или тестовые токены и никогда не вставлять рабочие токены в инструменты, которым вы не доверяете.
Почему любой может прочитать полезную нагрузку?
Подписанные JWT кодируются в base64url — это не шифрование. Подпись защищает токен от изменений, но не от прочтения. Если содержимое должно быть секретным, используйте зашифрованный JWT (JWE) или храните данные на сервере.
Что означает «exp» и в каких единицах оно задаётся?
exp — это время истечения срока действия в формате NumericDate: целое число секунд (не миллисекунд) с 00:00:00 UTC 1 января 1970 года. Токен нужно отклонять в этот момент или позже.
Почему появляется ошибка «недопустимый base64url»?
Вероятно, токен обрезался или изменился при копировании: например, потерялись последние символы, вокруг него появились кавычки или символы URL-кодирования (%2E вместо точки). Вставьте исходный токен без изменений.
Конфиденциальность
Токен декодируется с помощью JavaScript в вашем браузере. Он не отправляется на сервер, не сохраняется и не включается в аналитику. Проверка подписи и поиск ключа не выполняются, поэтому сетевые запросы не отправляются.