🟣Как работает авторизация через JWT: клиент отправляет логин и пароль, сервер проверяет и выдаёт токен. Дальше клиент при каждом запросе кладёт его в заголовок Authorization, сервер проверяет подпись и отдаёт ресурс. Никакой сессии на сервере, никакой базы с токенами.
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9...
🟣Что внутри токена: три части, разделённые точкой, каждая в Base64-URL.
1️⃣Header - тип токена и алгоритм подписи:
{"alg": "HS256", "typ": "JWT"}2️⃣Payload - claims, данные о пользователе и метаданные:
{"sub": "1234567", "role": "admin", "exp": 1714000000}3️⃣Signature - подпись, которая гарантирует целостность:
HMACSHA256(base64(header) + "." + base64(payload), secret)
🟣Почему подпись важна: payload читается без ключа, он просто Base64. Но изменить его и сохранить валидную подпись без секретного ключа нельзя. Именно поэтому JWT не шифрует данные, а только подписывает их.
🟣Что важно не забыть: exp - время истечения токена, без него токен живёт вечно. Алгоритм none в header - классическая атака, сервер обязан его отвергать. Чувствительные данные в payload лучше не класть, любой может его прочитать.
Серверная Админа | Zeroday | #JWT
