Декодер JWT
Декодуйте заголовок і корисне навантаження JWT, перегляньте exp, iat та nbf як дати й перевірте підпис HS256, RS256, ES256 чи EdDSA у браузері.
Токени – це облікові дані. Цей інструмент декодує й перевіряє їх у вашому браузері та нікуди не надсилає.
Заголовок
Корисне навантаження
| Claim | Значення | Дата | Статус |
|---|
- Алгоритм (alg)
- —
- Підпис (Base64url)
- —
Перевірка підпису
HS256/384/512: введіть спільний секрет. RS, PS, ES (256/384/512) та EdDSA: вставте відкритий ключ у форматі PEM (відкритий ключ, відкритий ключ RSA або сертифікат) чи JWK (набір JWK добирається за kid).
Як декодувати JWT
- Вставте токен у поле JSON Web Token. Повне значення
Authorization: Bearer …теж підійде: префіксBearerі переноси рядків буде прибрано. - Токен декодується під час введення (або натисніть Декодувати). Заголовок і Корисне навантаження з’являються у вигляді відформатованого JSON, кожен зі своєю кнопкою Копіювати.
- Перегляньте таблицю Часові claims: для
exp,nbfтаiatпоказано вихідне значення, дату у вашому часовому поясі, відносний час («через 3 години», «2 дні тому») і статус, наприклад Прострочено або Ще не дійсний. - Зверніть увагу на попередження над результатами, наприклад коли
algмає значенняnoneабо коли дата схожа на мілісекунди. - Щоб перевірити підпис, введіть ключ у розділі Перевірка підпису й натисніть Перевірити підпис.
Декодування – це не перевірка
JWT складається з трьох частин Base64url, розділених крапками: заголовок.навантаження.підпис. Заголовок і навантаження лише закодовані, а не зашифровані, тому будь-хто, хто має токен, може їх прочитати, і цей інструмент декодує будь-який токен без ключа. Це також означає, що декодоване навантаження нічого не доводить: його могли змінити. Лише дійсний підпис підтверджує, що токен видав власник ключа й що відтоді його не змінювали. Тому до перевірки в рядку статусу написано «Декодовано (підпис не перевірено)».
Токен із п’яти частин – це JWE (зашифрований JWT): його вміст не прочитати без ключа розшифрування, і інструмент повідомляє про це.
Перевірка підпису
- HS256, HS384, HS512 (HMAC): введіть спільний Секрет. У полі Формат секрету вкажіть, чи це звичайний текст (UTF-8), чи Base64/Base64url, адже деякі провайдери зберігають секрети в Base64. Також можна вставити JWK типу
oct. Якщо секрет коротший за результат хеш-функції (32 байти для HS256), інструмент зазначить, що він менший за мінімум із RFC 7518. - RS256/384/512, PS256/384/512, ES256/384/512 та EdDSA: вставте Відкритий ключ (PEM або JWK). Підтримувані блоки PEM:
PUBLIC KEY,RSA PUBLIC KEYіCERTIFICATE(ключ береться із сертифіката X.509). Працює і JWK, і цілий набір JWK: використовується ключ, чийkidзбігається із заголовком. Закриті ключі відхиляються: для перевірки вони не потрібні. EdDSA підтримує Ed25519 у браузерах, де це реалізовано у Web Crypto.
Перевірка використовує Web Crypto API браузера. Результат «Недійсний підпис» означає, що ключ хибний або токен змінено. Зверніть увагу: алгоритм береться із заголовка токена, тоді як справжній сервер має задавати очікуваний алгоритм у власній конфігурації, інакше його зможе вибрати зловмисник.
Нотатки щодо безпеки
- Токени – це облікові дані. Той, хто має чинний токен доступу, зазвичай може діяти від імені його власника до завершення терміну дії. Цей інструмент декодує й перевіряє все у вашому браузері та нікуди не надсилає ні токен, ні ключ. Проте все одно не вставляйте робочі токени в інструменти, які не можете перевірити.
alg: noneозначає, що токен не підписано. Підробити його може будь-хто, тож сервер має його відхиляти. Інструмент показує попередження та відмовляється «перевіряти» такий токен.- Перевірки часу тут використовують годинник вашого комп’ютера без допуску; сервери часто допускають розбіжність в одну-дві хвилини.
- Дати в JWT (NumericDate) – це секунди від 1 січня 1970 року за UTC. 13-значне значення, ймовірно, задано в мілісекундах, і це поширена помилка.
Поширені запитання
Чи може цей інструмент сказати, що токен дійсний?
Він покаже, чи підпис збігається з наданим вами ключем і чи виконано умови exp та nbf просто зараз. Чи буде токен прийнято, залежить ще й від перевірок, які знає лише сервер: очікуваний емітент (iss), аудиторія (aud), алгоритм і відкликання.
Чому перевірка не проходить із правильним секретом?
Перевірте Формат секрету: секрет у Base64, уведений як текст, дає інший ключ. Також переконайтеся, що до секрету не потрапив пробіл чи перенос рядка, адже ключі HMAC порівнюються побайтово.
Чим відрізняються RS256, PS256 та ES256?
Усі три – підписи з відкритим ключем і SHA-256. RS256 використовує RSA з доповненням PKCS#1 v1.5, PS256 – RSA з доповненням PSS, а ES256 – ECDSA на кривій P-256, що дає значно коротші підписи.
Де знайти відкритий ключ провайдера?
Провайдери ідентифікації публікують JWKS (JSON Web Key Set), зазвичай із посиланням у /.well-known/openid-configuration у полі jwks_uri. Відкрийте його самі й вставте JSON сюди: інструмент добере ключ за kid і нічого не завантажуватиме з мережі.
Чи безпечно вставляти сюди свій токен?
Токен залишається на вашому пристрої: декодування й перевірка відбуваються локально, нічого не завантажується на сервер. Для додаткової обережності використовуйте прострочений або тестовий токен, якщо потрібно лише переглянути структуру.
Схожі інструменти
- Генератор HMAC Обчисліть HMAC-SHA1, SHA-256, SHA-384 чи SHA-512 із ключем у вигляді тексту, hex або Base64 та перевірте підпис вебхука у браузері.
- Base64: кодер і декодер Безкоштовний кодер і декодер Base64 з повною підтримкою UTF-8 та варіантом base64url для URL. Працює у вашому браузері, нічого не завантажується на сервер.
- Конвертер Unix-часу Перетворюйте Unix-мітки часу в секундах чи мілісекундах на зрозумілі дати в місцевому часі, UTC та ISO 8601 і повертайте будь-яку дату в epoch-час.
- Форматувальник і валідатор JSON Безкоштовний форматувальник і валідатор JSON: форматує, мінімізує та перевіряє JSON у браузері й показує помилки синтаксису з рядком і стовпцем.