Декодер JWT

Декодуйте будь-який JSON Web Token у браузері: header і payload, exp, iat і nbf як справжні дати у вашому часовому поясі та чи сплив токен.

Декодується у вашому браузері. Токен ніколи не надсилається на наш сервер.

Підсумок

Заголовок (header)


                    

Payload (claims)


                    

Токен і підпис

Читайте будь-який JWT, нікуди його не надсилаючи

Вставте JSON Web Token, і декодер розділить його на три частини: заголовок (яким алгоритмом його підписано), payload (claims: хто користувач, до чого має доступ і коли спливає токен) та підпис. JSON форматується, щоб його можна було прочитати з першого погляду.

Часові claims перетворюються на справжні дати. exp, iat і nbf показуються у вашому часовому поясі, в UTC і у вигляді «через 20 хвилин» чи «3 дні тому», а статус одразу каже, чи токен діє, сплив, чи ще не набув чинності.

Токени часто відкривають доступ до справжніх акаунтів, тому все декодується у вашому браузері. Токен ніколи не завантажується на наш сервер, не логується і не зберігається — це безпечніше, ніж вставляти його в чат-бот чи на сайт, який надсилає його на сервер.

Як декодувати JWT

  1. Скопіюйте токен із застосунку, заголовка Authorization, cookie або інструментів розробника в браузері.
  2. Вставте його в поле. Префікс Bearer, лапки, пробіли й переноси рядків видаляються автоматично.
  3. Перегляньте підсумок: статус, алгоритм, видавця, суб’єкта, аудиторію та точний час видачі й закінчення.
  4. Кнопками копіювання перенесіть відформатований JSON заголовка або payload у баг-репорт чи свої нотатки.

Що означають основні claims

  • exp (expiration time): після цього моменту токен треба відхиляти.
  • iat (issued at): коли токен створено.
  • nbf (not before): до цього моменту токен приймати не можна.
  • iss (issuer): хто випустив токен, часто URL вашого сервера авторизації.
  • sub (subject): про кого токен, зазвичай ID користувача.
  • aud (audience): застосунок або API, для яких призначено токен.
  • alg і kid (у заголовку): алгоритм підпису, наприклад HS256 чи RS256, та ID ключа, яким токен підписано.

Дати в JWT — це значення NumericDate: кількість секунд від 1 січня 1970 року UTC. Декодер сам перетворює їх на дати, тож окремий конвертер timestamp не потрібен.

Поради з налагодження

  • Якщо API відповідає 401 одразу після входу, спершу перевірте exp і nbf. Годинник сервера, що поспішає чи відстає на кілька хвилин, — часта причина; більшість бібліотек дозволяють невеликий запас.
  • Дата через десятки тисяч років означає, що значення записано в мілісекундах замість секунд. Декодер попередить про це.
  • Порівняйте aud і iss з тим, на що очікує ваш API. Токен, виданий для іншого застосунку чи середовища (staging замість продакшену), — часта причина помилок «недійсний токен».
  • Заголовок з alg, що дорівнює none, означає непідписаний токен. Ніколи не приймайте такі токени в продакшені.

Обмеження та що варто знати

  • Декодувати — не означає перевірити. Будь-хто може створити токен з будь-якими claims; справжність доводить лише перевірка підпису правильним ключем на вашому сервері. Цей інструмент підписи не перевіряє.
  • Payload звичайного JWT лише закодований, а не зашифрований. Його може прочитати будь-хто, хто має токен, тому ніколи не зберігайте в claims паролі та секрети.
  • Зашифровані токени (JWE, п’ять частин) не можна прочитати без ключа, тому показується лише їхній заголовок.
  • Числа показуються точно так, як записані в токені, тож довгі числові ID ніколи не округлюються.

Поширені запитання

Чи безпечно вставляти сюди справжній токен?

Так. Декодування виконується на JavaScript у вашому браузері, і токен ніколи не надсилається на наш сервер. Проте ставтеся до чинних токенів як до паролів: не діліться ними на скриншотах і в чатах та дайте їм сплисти.

Чи може інструмент сказати, чи дійсний токен?

Він показує за датами, чи токен сплив або ще не набув чинності. Справжність підпису він визначити не може: для цього потрібен секретний або публічний ключ, який має бути лише у вашого сервера.

Чому токен показано як прострочений, хоча я щойно його отримав?

Перевірте годинник сервера, який його видав, і переконайтеся, що exp вказано в секундах, а не в мілісекундах. Якщо iat теж на кілька годин у минулому, годинник сервера, найімовірніше, іде неправильно.

Чим декодер JWT відрізняється від декодера Base64?

JWT — це три частини в кодуванні Base64URL, з’єднані крапками. Декодер Base64 читає по одній частині, а декодер JWT сам розділяє токен, розуміє URL-безпечний алфавіт і відсутність доповнення та перетворює дати на зрозумілий час.

Чи працює він офлайн?

Так. Після завантаження сторінки можна відключитися від інтернету й далі декодувати токени.

Схожі інструменти

  • Декодер Base64: Миттєво розкодовуйте рядки Base64 у читабельний текст. Перевіряйте заголовки авторизації, токени, payload API та листи. Безкоштовний декодер Base64.
  • Валідатор і форматувальник JSON: Перевіряйте й красиво форматуйте JSON онлайн. Знаходьте синтаксичні помилки та перетворюйте мініфікований JSON на читабельний код. Безкоштовно.
  • URL-декодер: Розкодовуйте процентно закодовані URL і query string у читабельний текст. Миттєво перетворюйте %20, %26 і %D1%97 на звичайні символи. Безкоштовно.
  • Кодувальник Base64: Миттєво кодуйте будь-який текст чи рядок у Base64. Зручно для data URI, заголовків HTTP Basic auth, пошти та API. Безкоштовний кодувальник Base64.

Поділіться

Схожі інструменти

Декодер Base64

Миттєво розкодовуйте рядки Base64 у читабельний текст. Перевіряйте заголовки авторизації, токени, payload API та листи. Безкоштовний декодер Base64.

Валідатор і форматувальник JSON

Перевіряйте й красиво форматуйте JSON онлайн. Знаходьте синтаксичні помилки та перетворюйте мініфікований JSON на читабельний код. Безкоштовно.

URL-декодер

Розкодовуйте процентно закодовані URL і query string у читабельний текст. Миттєво перетворюйте %20, %26 і %D1%97 на звичайні символи. Безкоштовно.

Популярні безкоштовні інструменти