JWT (JSON Web Token) — це відкритий стандарт (RFC 7519) для безпечної передачі інформації між сторонами у вигляді JSON-об'єкта. JWT широко використовується для автентифікації в сучасних веб-додатках.
Структура JWT
JWT складається з трьох частин, розділених крапками:
eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0NTY3ODkwIn0.dozjgNryP4J3jVmNHl0w5N_XgL0n3I9PlFUP0THsR8U
1. Header (Заголовок)
{"alg": "HS256", "typ": "JWT"}
Визначає алгоритм підпису та тип токена.
2. Payload (Навантаження)
{"sub": "1234567890", "name": "John Doe", "iat": 1516239022, "exp": 1516242622}
Містить claims — дані про користувача та метадані токена.
3. Signature (Підпис)
Гарантує цілісність токена. Для HS256:
HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)
Як працює JWT-автентифікація
- Користувач відправляє логін та пароль
- Сервер перевіряє дані та створює JWT
- Клієнт зберігає токен (localStorage, cookie)
- При кожному запиті клієнт відправляє:
Authorization: Bearer <token> - Сервер перевіряє підпис та витягує дані з payload
JWT Debugger
Використовуйте JWT Debugger Xuvero для декодування та аналізу токенів.
Безпека JWT
- Зберігайте токени в httpOnly cookie, а не localStorage
- Встановлюйте короткий термін дії (15-30 хвилин)
- Використовуйте refresh token для оновлення
- Ніколи не зберігайте конфіденційні дані в payload
- Перевіряйте
algна сервері — захист від "alg: none" атаки