Декодер JWT

Вставьте JSON Web Token ниже, чтобы увидеть его заголовок и payload, декодированные в читаемый JSON. Этот инструмент только декодирует структуру токена — он не проверяет, действительна ли подпись, и текст токена никогда не покидает ваш браузер.

Подпись НЕ проверяется

Этот инструмент только декодирует заголовок и payload как JSON — он НЕ проверяет подлинность подписи, поэтому НЕ может сказать вам, настоящий ли токен. Токен НИКОГДА не отправляется на наш сервер или куда-либо ещё: всё декодирование происходит локально, в вашем браузере, на JavaScript. Payload JWT может содержать чувствительные данные, поэтому относитесь к любому вставленному сюда (или куда угодно) токену так же, как к паролю.

Декодер JWT

JSON Web Token (JWT, RFC 7519) — это три сегмента, закодированных в Base64URL и соединённых точками: header.payload.signature. Заголовок — небольшой JSON-объект, называющий алгоритм подписи («alg», например «HS256» или «RS256») и тип токена («typ»: «JWT»). Payload — JSON-объект с «claims» — произвольными данными, которые эмитент хочет передать, плюс несколько зарегистрированных имён claim с общепринятым значением: «sub» (subject, обычно ID пользователя), «iss» (issuer, эмитент), «aud» (audience, аудитория), «exp» (expiration, Unix-время, после которого токен следует отклонять), «iat» (issued-at, время выпуска) и «nbf» (not valid before). Подпись — это криптографический MAC или цифровая подпись над заголовком и payload, вычисленная секретным или закрытым ключом, который есть только у эмитента.

Декодирование — это не то же самое, что проверка.Декодирование — то, что делает этот инструмент — просто обращает кодирование Base64URL и разбирает получившиеся байты как JSON; оно не требует ключа и ничего не доказывает о подлинности. Проверка сверяет подпись с реальным секретным или публичным ключом эмитента — это единственный способ узнать, что токен не был подделан или изменён. Поскольку заголовок и payload JWT только закодированы, а не зашифрованы, ЛЮБОЙ, у кого есть текст токена — включая этот инструмент, расширение браузера или вредоносный сайт, куда вы его вставите — может прочитать каждый claim внутри в открытом виде. Именно поэтому существует предупреждение над этим инструментом: JWT — это не контейнер секретов, и декодирование здесь ничего не доказывает о том, стоит ли ему доверять.

Разработчики чаще всего обращаются к такому декодеру при отладке: проверяя, действительно ли прошёл срок claim «exp» (очень частая причина непонятных ошибок 401), уточняя, какие значения «aud»/«iss» выдаёт провайдер OAuth или OpenID Connect, или просто изучая, какие claims несёт токен стороннего API перед написанием кода под него. Ничто из этого не требует обращения к подписи вообще — на большинство таких вопросов отвечает уже сама структура.

Сегменты header и payload используют Base64URL, а не стандартный Base64 (RFC 4648 §5: «-»/«_» вместо «+»/«/», без дополнения) — эту деталь инструмент обрабатывает за вас автоматически. Если сегмент не удаётся декодировать, обычно это из-за того, что во вставленном тексте отсутствует сегмент (у корректного JWT всегда ровно три части через точку), он был обрезан при копировании, или это вообще не JWT.

Глоссарий

JWT
JSON Web Token (RFC 7519) — компактный, безопасный для URL формат токена, кодирующий JSON-payload с claims, подписанный для доказательства отсутствия изменений.
Claim
Отдельный элемент данных в payload JWT — либо зарегистрированное имя с общепринятым значением (sub, exp, iat), либо произвольное поле, определённое приложением.
exp / iat
Зарегистрированные claims с Unix-временем: «exp» — когда токен истекает и должен быть отклонён; «iat» — когда он был выпущен.
Подпись
Криптографический MAC или цифровая подпись над заголовком и payload, вычисленная ключом, который есть только у эмитента — та часть, которую этот инструмент намеренно никогда не проверяет.
alg
Поле заголовка, называющее алгоритм подписи, например «HS256» (HMAC-SHA256, общий секрет) или «RS256» (RSA, пара публичный/закрытый ключ).
Base64URL
Безопасный для URL вариант Base64 (RFC 4648 §5), которым закодированы сегменты JWT — «-»/«_» вместо «+»/«/», без дополнения.

API-эквивалент

У этого инструмента нет API-эквивалента в нашем сервисе — декодирование JWT не является фактом об IP-адресе, поэтому нашему API здесь нечего возвращать. Декодирование выше выполняется полностью на вашем устройстве; ваш токен никуда не отправляется. Если вы искали наш API для поиска по IP — он покрывает геолокацию, ASN/сеть и данные об угрозах/мошенничестве для IP-адреса:

Читать полную документацию API

Часто задаваемые вопросы

Проверяет ли этот инструмент подпись JWT?
Нет. Он только декодирует заголовок и payload как JSON — никогда не проверяет действительность подписи, поэтому не может сказать, настоящий ли токен. Проверка подписи требует секретного или публичного ключа эмитента, который этот инструмент никогда не запрашивает и не имеет.
Отправляется ли мой токен на ваш сервер?
Нет — всё декодирование происходит локально, на JavaScript вашего браузера. Эта страница никогда не делает сетевого запроса со вставленным вами токеном.
Почему при декодировании моего токена появляется ошибка?
Корректный JWT — это ровно три сегмента в Base64URL через точку. Самые частые причины — отсутствующий или обрезанный сегмент (часто из-за копирования только части токена), либо вставленный текст просто не является JWT.
Что означают поля «exp» и «iat»?
Оба — это Unix-время (секунды с 1970-01-01). «iat» — момент выпуска токена; «exp» — момент истечения, после которого правильно реализованный проверяющий должен начать его отклонять.
Можно ли использовать это для подделки действительного токена?
Нет. Изменение декодированного JSON здесь никак не влияет на настоящий токен — подлинность токена целиком определяется его подписью, которую этот инструмент никогда не вычисляет и не проверяет и для которой у него нет доступа к секретному или закрытому ключу.
В чём разница между JWT и обычным Base64?
JWT — это конкретная трёхчастная структура (header.payload.signature), использующая Base64URL, безопасный для URL вариант Base64. Обычный Base64 — это просто лежащее в основе кодирование общего назначения — используйте инструмент Base64 для произвольного текста, а этот — специально для структуры JWT.

Понравился инструмент? Бесплатный аккаунт нашего API даёт 1000 запросов в день.Смотреть документацию API →