Декодер JWT: расшифровка токена онлайн

Вставьте JWT — увидите заголовок и payload в читаемом JSON, сроки exp, iat и nbf в вашем часовом поясе и истёк ли токен. Токен не покидает браузер.

Чтобы проверить подпись, введите секрет ниже: проверка идёт в браузере, секрет никуда не отправляется. Боевые секреты всё равно лучше нигде не вставлять.

Заголовок (header)
{
  "alg": "HS256",
  "typ": "JWT"
}
Данные (payload)
{
  "sub": "1234567890",
  "name": "John Doe",
  "role": "admin",
  "iat": 1767225600,
  "nbf": 1767225600,
  "exp": 1798761600
}
Подпись (signature)
RDvudNA1pyyGaAIcSdO7DgEmU2_VncMo0ojXM6gg53U

Как пользоваться

Вставьте токен в поле — целиком, вместе с заголовком Authorization: Bearer … или без него, можно с переносами строк. Декодер сразу покажет:

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

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

Токены с алгоритмом HS256, HS384 и HS512 подписаны общим секретом. Если он у вас есть, введите его в поле под токеном: подпись проверится прямо в браузере. Подписи RS и ES (открытым ключом) калькулятор не проверяет — для них нужен открытый ключ сервера. Payload обычного JWT не зашифрован, а только закодирован в Base64URL: прочитать его может кто угодно, а подделать без ключа — нет. Поэтому:

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

Токен — три части через точку: заголовок.payload.подпись. Первые две — JSON, закодированный в Base64URL (это Base64, где + и / заменены на - и _, а знаки = в конце отброшены). Пример из стандарта RFC 7519:

eyJ0eXAiOiJKV1QiLA0KICJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ.dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk

Его заголовок — {"typ":"JWT","alg":"HS256"}, payload — {"iss":"joe","exp":1300819380,"http://example.com/is_root":true}. Поле exp равно 1300819380 — это 22 марта 2011 года, 18:43 UTC, так что токен давно истёк.

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

Поле Значение
iss кто выпустил токен
sub кому выдан — обычно ID пользователя
aud для какого сервиса предназначен
exp когда истекает (с этого момента токен недействителен)
nbf с какого момента действует
iat когда выпущен
jti уникальный ID токена — чтобы его можно было отозвать

Время в exp, nbf и iat — Unix timestamp в секундах. Перевести любое такое число в дату можно конвертером Unix timestamp.

Частые ошибки

Частые вопросы

Почему токен «истёк», хотя сервер его принимает? Серверы часто допускают расхождение часов на несколько минут (leeway). Проверьте и время на вашем устройстве: статус считается по нему.

Можно ли изменить payload и отправить токен обратно? Изменить можно, но подпись перестанет совпадать, и сервер, который её проверяет, такой токен отклонит.

Чем раскодировать произвольную строку Base64? Для этого есть Base64-декодер, а большой JSON удобнее разбирать в JSON форматтере.