Структура JWT
Три части токена
- Header — JSON с типом ({"typ":"JWT"}) и алгоритмом подписи ({"alg":"HS256"}). Кодируется в Base64URL.
- Payload — JSON с claims (утверждениями): sub (subject), iat (issued at), exp (expiration), любые пользовательские поля.
- Signature — HMAC-SHA256 или RSA-подпись header+payload секретным ключом.
Как работает аутентификация
1) Клиент отправляет логин/пароль на сервер. 2) Сервер проверяет, генерирует JWT и возвращает клиенту. 3) Клиент сохраняет JWT (localStorage, cookie). 4) При каждом запросе клиент отправляет JWT в заголовке Authorization: Bearer ... 5) Сервер проверяет подпись и срок действия.
Преимущества JWT
- Stateless — серверу не нужна сессия, можно масштабировать горизонтально;
- Содержит информацию о пользователе (нет лишних запросов в БД);
- Универсальный формат для всех платформ;
- Подходит для микросервисов и SSO.
