Декодирование JWT онлайн

Локальная обработка
app.jwt.view

Данные также можно передать через #data={"name":"Ada"} или #url=... После чтения параметры сразу удаляются из адресной строки.

JWT состоит из Header, Payload и подписи. Страница в браузере декодирует первые две части в Base64URL, чтобы посмотреть срок действия и свои claim. Token на сервер не уходит. При отладке сессии и проверке, exp уже истёк ли, не нужно вставлять настоящий Token на неизвестный сайт.

Локальный разбор

Удобно отлаживать сессию и сверять exp / sub . В Header видны алгоритм и тип, в Payload — бизнес-заявления.

Если сегмент подписи отсутствует, первые две части всё равно пробуют декодировать — удобно для обрезанных логов.

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

Закрытый ключ не должен оказываться на веб-странице. Проверку подписи в продакшене делайте на бэкенде. Payload может прочитать любой, у кого есть Token: конфиденциальность дают HTTPS и короткий срок действия.

Страница показывает строку подписи, но не проверяет, верны ли HMAC / RSA.

Сверка заявлений

Распознаются issЛокальный разборaudУдобно отлаживать сессию и сверятьiat и другие официальные поля с пояснением смысла. Числовые метки времени по возможности переводятся в читаемое время.

Свои claim выводятся как есть — удобно сверить ваш протокол входа.

Пример

Вид Token
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0IiwibmFtZSI6IuW8oOS4iSIsImlhdCI6MTcyMDAwMDAwMCwiZXhwIjoxOTAwMDAwMDAwfQ.signature
Что видно после декодирования
{
  "header": { "alg": "HS256", "typ": "JWT" },
  "payload": { "sub": "1234", "name": "张三", "iat": 1720000000, "exp": 1900000000 }
}
Проверяется ли сегмент подписи?

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

Теряется ли точность у больших целых?

У JavaScript Number есть предел точности. Очень большие ID сверяйте с исходным Payload, а не только с преобразованным числом.

Сохраняется ли Token?

Не загружается и не пишется в облачную историю. После закрытия вкладки исчезает из памяти.

Можно ли этим подделать вход?

Нельзя и не следует. Без закрытого ключа нельзя получить Token, который пройдёт проверку на сервере. Страница только для чтения.

Рекомендуемый процесс

  1. Скопируйте JWT из заголовка ответа, Cookie или локального хранилища (не отправляйте в чаты).
  2. Вставьте сюда или загрузите пример и посмотрите Header и Payload.
  3. Проверьте, соответствует ли exp / nbf текущему времени и указывает ли aud на правильный сервис.
  4. Проверку подписи, обновление и отзыв оставляйте на бэкенде; эта страница только помогает читать.

То, что JWT можно декодировать, не значит, что пользователь аутентифицирован. Храните Token как пароль и вовремя инвалидируйте после истечения.