Інструкція
Як декодувати JWT без витоку
JSON Web Token несе реальні дані: користувача, якому його видано, права, які він надає, і момент завершення терміну дії. Вставити його у випадковий онлайн-декодер означає передати ці дані, а часто й досі чинну сесію, серверу, який вам не підконтрольний. Декодер нижче працює повністю у вашому браузері, тож ви можете прочитати вміст токена, перевірити, чи не сплив він, і підтвердити підпис HMAC, якщо знаєте секрет, і все це без жодного мережевого запиту, що покидає вашу вкладку.
Крок за кроком
- Відкрийте декодер JWT і вставте свій токен у поле введення. JWT складається з трьох частин у кодуванні Base64Url, з'єднаних крапками: заголовок, корисне навантаження та підпис. Ви можете вставити його з префіксом Bearer або без нього; інструмент у будь-якому разі розбере структуру й одразу повідомить, якщо формат хибний.
- Прочитайте декодовані заголовок і корисне навантаження. Заголовок показує алгоритм підпису (наприклад, HS256 або RS256) та ідентифікатор ключа, якщо він є. Корисне навантаження перелічує claim: для кого токен (sub), хто його видав (iss), і часові позначки. Інструмент перетворює числові поля iat, nbf і exp на читабельні дати й позначає, чи токен ще чинний, чи вже сплив.

- Якщо токен використовує HS256 і у вас є спільний секрет, вставте секрет у поле перевірки й натисніть Перевірити. Інструмент заново обчислює HMAC за заголовком і корисним навантаженням та порівнює його з підписом, тож ви дізнаєтеся, чи токен справжній, чи був змінений. Для токенів RS256 або ES256 підпис робиться приватним ключем, якого у вас немає, тому інструмент розбирає claim, але не заявляє, що перевіряє підпис.

Чому не можна вставляти токен на випадковий сайт
JWT не зашифрований. Заголовок і корисне навантаження лише закодовані в Base64Url, а отже будь-хто, хто отримає токен, може прочитати кожен claim усередині: email, ідентифікатор користувача, ролі, внутрішні прапорці. Якщо це токен доступу, який ще не сплив, той, у кого він є, може відтворити його й діяти від вашого імені, поки він чинний. Коли ви вставляєте живий токен у розміщений на сервері декодер, ви надсилаєте все це в логи того сервера. Декодування токена на власній машині, без завантаження, єдиний спосіб його розібрати, не розширюючи коло тих, хто його бачить. Переконатися, що трафіку немає, можна, відкривши панель мережі під час декодування.
Що підпис може і чого не може сказати
Підпис і є тим, що заважає комусь змінити claim і лишитися безкарним. Для токена HS256 той самий секрет підписує й перевіряє, тож, знаючи секрет, ви можете повністю підтвердити справжність токена просто тут. Для токенів RS256 і ES256 токен підписується приватним ключем, а перевіряє лише відповідний публічний ключ; приватний ключ ніколи не покидає видавця, тому клієнтський інструмент читає claim, але без публічного ключа не може чесно довести підпис. Вважайте декодоване корисне навантаження твердженням видавця, а не доказом, доки підпис не перевірить той, кому належить ключ перевірки. Щоб хешувати або порівнювати секрети окремо, генератор хешів на цьому сайті теж працює локально.
Структура JWT та що розкриває кожна частина
JWT складається з трьох сегментів, закодованих у Base64url та розділених крапками: заголовок, корисне навантаження та підпис. Заголовок оголошує тип токена ("JWT") і алгоритм: найбільш поширеними є HS256 (HMAC-SHA-256, спільний секрет) або RS256 (RSA-SHA-256, пара відкритий/приватний ключ). Корисне навантаження містить твердження, такі як `sub` (суб'єкт, зазвичай ID користувача), `iat` (мітка часу Unix видачі), `exp` (мітка часу Unix закінчення терміну дії), `aud` (цільова аудиторія) та спеціальні твердження застосунку, наприклад ролі або права доступу. Base64url не є шифруванням: це URL-безпечний варіант Base64, що замінює `+` на `-` і `/` на `_`, і опускає доповнення. Будь-хто, хто має необроблений рядок токена, може декодувати заголовок і корисне навантаження без ключа підпису. Для перевірки потрібен лише сегмент підпису. Саме тому вставлення живого виробничого токена у зовнішній онлайн-декодер є ризиком для безпеки: якщо `exp` токена ще в майбутньому і сервіс реєструє вхідні дані, сесія, яку він представляє, може бути скомпрометована.
Інструменти з цього гайда
- Декодувальник JWTДекодуйте JWT (заголовок, корисне навантаження, термін дії) без надсилання його будь-куди. Без перевірки підпису.
- Генератор хешівГенеруйте хеші MD5, SHA-1, SHA-256, SHA-512 з тексту або файлів. Без завантаження на сервер.
- Форматувальник JSONФорматуйте, перевіряйте та мінімізуйте JSON безпосередньо у браузері. Без завантаження на сервер.
Поширені запитання
Чи надсилається мій токен на якийсь сервер під час декодування?
Ні. Декодер розбиває токен, декодує заголовок і корисне навантаження з Base64Url та відображає їх у пам'яті. Необов'язкова перевірка HMAC використовує вбудований у браузер Web Crypto API. Нічого не йде мережею, і це важливо, бо JWT часто містить персональні дані та досі активну сесію. Відкрийте панель мережі браузера під час декодування, і ви побачите, що жоден запит не виходить.
Чи може цей інструмент перевірити підпис RS256 або ES256?
Не повністю, і він не вдаватиме. HS256 використовує один спільний секрет і для підпису, і для перевірки, тож вставлення цього секрета дає інструменту змогу підтвердити підпис у вашому браузері. RS256 і ES256 використовують приватний ключ для підпису й окремий публічний ключ для перевірки; інструмент читає та перевіряє claim і термін дії, але не стверджує підпис, який не може перевірити. Для таких токенів перевіряйте на сервісі, у якого є публічний ключ.