developer · jwt · token inspector

JWT Decoder онлайн

Вставь JWT token и получи декодированные header, payload, данные по exp, iat, nbf, issuer, audience и subject. Можно локально проверить HMAC-подпись для HS256 / HS384 / HS512. Сервер токен не получает, потому что отдавать токены кому попало — это не DevOps, а ритуал призыва проблем.

JWT token

JWT декодируется локально в браузере.

Header

Payload

Signature

Проверка HMAC подписи

Поддерживаются HS256, HS384, HS512
Проверка подписи появится здесь. Декодирование JWT не означает, что токен подлинный.

Claims explanation

Вставь JWT, чтобы увидеть объяснение claims.

Что делает JWT Decoder

Инструмент разбирает JWT на три части: header, payload и signature. Header и payload декодируются из Base64URL в читаемый JSON.

Декодирование ≠ проверка

Любой JWT можно декодировать без secret key. Но чтобы понять, настоящий ли токен, нужно проверить подпись.

Приватность

Токен и secret key обрабатываются локально в браузере и не отправляются на сервер. Всё равно не вставляй реальные production-токены без необходимости.

Из чего состоит JWT

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

Стандартные поля payload

Семь полей описаны в спецификации, остальные каждый сервис добавляет под себя. Эти встречаются почти в любом токене:

ПолеРасшифровкаЧто означает
ississuerкто выпустил токен
subsubjectкому он выдан — обычно идентификатор пользователя
audaudienceдля какого сервиса предназначен
expexpiration timeмомент, после которого токен недействителен
nbfnot beforeмомент, раньше которого токен не действует
iatissued atкогда токен выпущен
jtiJWT IDуникальный номер токена, нужен для отзыва

Время в exp, nbf и iat хранится в секундах с 1 января 1970 года — например, 1787000000. Декодер выше переводит эти числа в обычную дату, чтобы не считать вручную.

Главное: декодирование не проверяет подлинность

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

Отсюда правило, на котором ломаются приложения: нельзя принимать решения о доступе на основании декодированного payload. Прочитали "role": "admin" — это ещё не значит, что перед вами администратор.

Три ошибки, которые встречаются чаще всего

Что не стоит класть в payload

Раз содержимое читается любым, кто получил токен, в него не кладут пароли, номера карт, паспортные данные и внутренние секреты. Обычный безопасный набор — идентификатор пользователя, срок действия, набор прав. Всё остальное сервер достаёт из базы по этому идентификатору.

Приватность этого инструмента

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

FAQ

JWT Decoder проверяет подпись?

По умолчанию инструмент декодирует header и payload. Для HS256, HS384 и HS512 можно отдельно проверить HMAC-подпись, если у тебя есть secret key.

Можно ли доверять декодированному payload?

Только после проверки подписи. Сам payload можно изменить, поэтому декодирование без verify не доказывает подлинность токена.

Что значит exp в JWT?

exp — expiration time. Это Unix timestamp, после которого токен считается истёкшим.

Что означают iss, sub и aud?

iss — кто выпустил токен, sub — кому он выдан (обычно идентификатор пользователя), aud — для какого сервиса предназначен. Это стандартные поля из спецификации JWT.

Чем HS256 отличается от RS256?

HS256 использует один общий секрет и для подписи, и для проверки. RS256 подписывает приватным ключом, а проверяется публичным — это безопаснее, когда токен проверяют несколько разных сервисов.

Почему опасен алгоритм none?

Если сервер берёт алгоритм из самого токена, злоумышленник укажет none, уберёт подпись и получит принятый токен с любым содержимым. Алгоритм проверки должен задаваться на стороне сервера.

Можно ли расшифровать JWT без ключа?

Header и payload не шифруются, а кодируются в Base64URL — прочитать их можно без всякого ключа. Ключ нужен только для проверки подписи, то есть подлинности токена.

JWT отправляется на сервер?

Нет. Декодирование и проверка HMAC выполняются локально в браузере.