JWT Decoder
Декодує header і payload JWT просто у браузері.
Про цей інструмент
JSON Web Token (RFC 7519) — це три Base64url-encoded сегменти, з'єднані крапками: header, payload і signature. JWT Decoder розділяє токен, декодує перші два сегменти в JSON, форматує їх і обчислює time-related claims (iat, exp, nbf) як human-readable timestamps. Стандартні registered-claims (iss, sub, aud, jti) маркуються зі своїм значенням. Декодування йде повністю у вашому браузері — ваш токен ніколи не покидає сторінку.
Header каже вам signing algorithm (alg: HS256, RS256, ES256 тощо) і опційний kid (key ID). Payload містить application-claims — user ID, roles, expiry. Signature показано як Base64-blob; ми свідомо не верифікуємо його на цій сторінці, бо верифікація потребує secret видавця або public key, які ніколи не варто вставляти в third-party-інструмент. Токен трактується лише як data.
Коли використовувати цей інструмент
- Читання токена з вашого сервісу. Інспектуйте, які claims ви реально emit-ите — швидко помітьте відсутні поля, неправильні audiences або несподівані defaults.
- Дебаг «401 Unauthorized»-відповідей. Перевірте expiry, issuer, audience і scope проти того, що очікує сервер.
- Верифікація third-party інтеграції. Коли OAuth-провайдер віддає вам ID-token, декодуйте payload, щоб побачити, які user-claims вони пакують.
- Виявлення algorithm confusion. Якщо
alg=noneабо несподівано різниться між токенами, ваша auth-бібліотека ймовірно misconfigured.
Чому ми не валідуємо підпис
Верифікація JWT-підпису потребує secret (для HMAC-алгоритмів) або public key видавця (для RSA/ECDSA). Вставляти будь-що з цього в web-tool — security-помилка: secret скомпрометує кожен виданий токен; public key, хоч і менш чутливий, теж може бути приватним. Декодер підтверджує структуру і виявляє claims; для реальної верифікації використовуйте SDK, що йде з вашою auth-бібліотекою (jsonwebtoken, pyjwt, jose) всередині свого коду.
Часті запитання
Чи безпечно вставляти мій JWT сюди?
Чому signature показано, але не верифіковано?
Що означає «alg: none»?
alg: none існує в специфікації, але ніколи не має з'являтися в продакшні — це коренева причина знаменитої «JWT none-algorithm»-вразливості, де бібліотека приймає none як валідний. Якщо ви бачите це в реальному токені реального сервісу — це серйозний баг.
Яка різниця між exp, iat і nbf?
iat (issued-at) — коли токен створено. nbf (not-before) — найраніший час, коли токен можна використовувати — зазвичай дорівнює iat, але може бути в майбутньому для відкладеної активації. exp (expiration) — коли токен перестає бути валідним. Усі три — Unix timestamps у секундах. Добре поведений верифікатор перевіряє nbf ≤ now ≤ exp на кожному запиті.