Что делает JWT Decoder
Инструмент разбирает JWT на три части: header, payload и signature. Header и payload декодируются из Base64URL в читаемый JSON.
Вставь JWT token и получи декодированные header, payload,
данные по exp, iat, nbf, issuer, audience и subject.
Можно локально проверить HMAC-подпись для HS256 / HS384 / HS512. Сервер токен не получает,
потому что отдавать токены кому попало — это не DevOps, а ритуал призыва проблем.
Инструмент разбирает JWT на три части: header, payload и signature. Header и payload декодируются из Base64URL в читаемый JSON.
Любой JWT можно декодировать без secret key. Но чтобы понять, настоящий ли токен, нужно проверить подпись.
Токен и secret key обрабатываются локально в браузере и не отправляются на сервер. Всё равно не вставляй реальные production-токены без необходимости.
JSON Web Token — это три блока, разделённые точками:
header.payload.signature. Первые два — обычный JSON, закодированный в Base64URL.
Это кодирование, а не шифрование: расшифровать содержимое может кто угодно,
включая того, у кого токен оказался случайно.
alg) и тип (typ).Семь полей описаны в спецификации, остальные каждый сервис добавляет под себя. Эти встречаются почти в любом токене:
| Поле | Расшифровка | Что означает |
|---|---|---|
iss | issuer | кто выпустил токен |
sub | subject | кому он выдан — обычно идентификатор пользователя |
aud | audience | для какого сервиса предназначен |
exp | expiration time | момент, после которого токен недействителен |
nbf | not before | момент, раньше которого токен не действует |
iat | issued at | когда токен выпущен |
jti | JWT ID | уникальный номер токена, нужен для отзыва |
Время в exp, nbf и iat хранится в секундах с 1 января 1970 года —
например, 1787000000. Декодер выше переводит эти числа в обычную дату,
чтобы не считать вручную.
Раскрыть payload можно без ключа — на то он и Base64. Но прочитанное ничего не доказывает: злоумышленник может собрать токен с любым содержимым, и декодер покажет его так же аккуратно. Единственное, что отличает настоящий токен от поддельного, — подпись, а её проверяют на сервере секретным ключом.
Отсюда правило, на котором ломаются приложения: нельзя принимать решения о доступе
на основании декодированного payload. Прочитали "role": "admin" — это ещё не
значит, что перед вами администратор.
none. Если сервер доверяет полю alg из самого
токена, злоумышленник поставит туда none, уберёт подпись — и токен пройдёт проверку.
Алгоритм должен быть задан на сервере, а не взят из токена.exp и nbf.Раз содержимое читается любым, кто получил токен, в него не кладут пароли, номера карт, паспортные данные и внутренние секреты. Обычный безопасный набор — идентификатор пользователя, срок действия, набор прав. Всё остальное сервер достаёт из базы по этому идентификатору.
Разбор идёт в браузере: токен и секретный ключ не уходят на сервер и нигде не сохраняются. И всё же общее правило безопасности сильнее любых обещаний сайта — рабочие токены от продакшена лучше не вставлять ни в один онлайн-сервис. Для отладки берите тестовый токен или тот, у которого уже истёк срок.
По умолчанию инструмент декодирует header и payload. Для HS256, HS384 и HS512 можно отдельно проверить HMAC-подпись, если у тебя есть secret key.
Только после проверки подписи. Сам payload можно изменить, поэтому декодирование без verify не доказывает подлинность токена.
exp — expiration time. Это Unix timestamp, после которого токен считается истёкшим.
iss — кто выпустил токен, sub — кому он выдан (обычно идентификатор пользователя), aud — для какого сервиса предназначен. Это стандартные поля из спецификации JWT.
HS256 использует один общий секрет и для подписи, и для проверки. RS256 подписывает приватным ключом, а проверяется публичным — это безопаснее, когда токен проверяют несколько разных сервисов.
Если сервер берёт алгоритм из самого токена, злоумышленник укажет none, уберёт подпись и получит принятый токен с любым содержимым. Алгоритм проверки должен задаваться на стороне сервера.
Header и payload не шифруются, а кодируются в Base64URL — прочитать их можно без всякого ключа. Ключ нужен только для проверки подписи, то есть подлинности токена.
Нет. Декодирование и проверка HMAC выполняются локально в браузере.