Что такое Декодер JWT?

Вставьте любой JSON Web Token, чтобы увидеть декодированные заголовок, полезную нагрузку и подпись. Проверяйте утверждения токена, контролируйте срок действия и отлаживайте проблемы аутентификации за секунды.

Декодер делит токен по точкам, выполняет Base64URL-декодирование заголовка и полезной нагрузки и парсит их как JSON. Видны алгоритм подписи (HS256, RS256, EdDSA и т. п.), все зарезервированные claims (iss, sub, aud, exp, iat, nbf, jti) и любые пользовательские claims вашего сервиса. Время в claims переводится из Unix epoch в вашу локальную таймзону, и просроченный токен сразу бросается в глаза.

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

  1. Вставьте JWT-токен в поле ввода — три секции в кодировке Base64 будут обнаружены автоматически.
  2. Просмотрите декодированный заголовок (алгоритм, тип) и полезную нагрузку (утверждения, срок действия, издатель) рядом друг с другом.
  3. Скопируйте отдельные декодированные секции или полный разобранный результат.

Когда использовать

  • Разобраться с 401, проверив, не истёк ли exp у bearer-токена.
  • Перед выкаткой в прод убедиться, что у токена со стейджа правильные aud и iss.
  • Посмотреть, какие user_id или scopes сторонний SSO зашил в access token.

Результат

При отладке ошибки 401 в API вставьте Bearer-токен из заголовка запроса, чтобы проверить, не истёк ли срок в поле 'exp' и совпадает ли 'aud' с ожидаемой аудиторией.

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

Проверяет ли инструмент подпись?
Для HMAC-токенов (HS256, HS384, HS512) вставьте секрет, и инструмент проверит подпись прямо на вашем устройстве. Для RS- и ES-токенов (RS256/384/512, ES256/384/512) вставьте открытый ключ издателя в формате PEM — проверка пройдёт так же. В любом случае секрет или ключ не покидает ваше устройство.
Безопасно ли вставлять реальный токен из продакшена?
Декодирование выполняется на вашем устройстве, токен никуда не отправляется. Но bearer-токен сам по себе даёт доступ от имени пользователя, так что главный риск — это посторонние глаза рядом с экраном, а не сам инструмент.
Что означает значение 'none' в поле alg?
Раньше некоторые библиотеки принимали неподписанные токены с alg=none — это известный вектор атаки. Прод-API должен такие токены отклонять. Если вы видите 'none' в токене аутентификации — пора чинить эмитента.
Почему exp и iat показаны числами, а не датами?
JWT хранит таймстампы как количество секунд с 1970-01-01 UTC. Декодер дополнительно выводит читаемую локальную дату рядом с каждым claim, чтобы не считать вручную, истёк токен или нет.
Можно ли декодировать зашифрованный токен (JWE)?
JWE состоит из пяти частей через точку и зашифрован целиком, а не только подписан. Этот инструмент работает с JWS (три части: header.payload.signature). Для JWE нужен ключ дешифрования, который по замыслу должен оставаться только на сервере-получателе.

Похожие инструменты