Декодувальник JWT токенів: інспекція без верифікації
Що таке JWT?
JWT (JSON Web Token) — відкритий стандарт (RFC 7519) для безпечної передачі інформації між сторонами у вигляді JSON-об'єкта. Токен складається з трьох частин, розділених крапкою: заголовок (header), корисне навантаження (payload) та підпис (signature). Кожна частина закодована у Base64url.
Структура JWT
Заголовок містить тип токена і алгоритм підпису: {"alg": "HS256", "typ": "JWT"}. Payload містить claims (твердження): стандартні (iss, sub, exp, iat) та довільні поля. Signature створюється підписанням заголовка і payload секретним ключем — її не можна перевірити без ключа, але декодувати header і payload можна завжди.
Для чого використовуються JWT?
Автентифікація: після входу сервер видає JWT, який клієнт надсилає з кожним запитом. Авторизація: payload може містити ролі і права доступу. Обмін інформацією між сервісами. SSO (Single Sign-On) між кількома додатками. Access token зазвичай живе 15–60 хвилин, refresh token — кілька днів.
Безпека JWT
Payload не зашифрований — не зберігайте в ньому чутливих даних без додаткового шифрування (JWE). Перевіряйте підпис на сервері для кожного запиту. Використовуйте короткий термін дії (exp) і механізм оновлення токенів. Зберігайте токени в httpOnly cookies або безпечному сховищі, щоб уникнути XSS-атак.