Как работает JWT авторизация
Python
Middle
Без компании
Как работает JWT авторизация
Ответы
JWT (JSON Web Token) — это компактный способ безопасной передачи данных между сторонами в виде JSON-объекта. Он состоит из трех частей, разделенных точками:
- **Header** — содержит тип токена и алгоритм шифрования (например, `{"alg": "HS256", "typ": "JWT"}`).
- **Payload** — полезные данные (например, `{"user_id": 123, "exp": 1735689600}`).
- **Signature** — подпись, созданная на основе header, payload и секретного ключа.
**Пример создания JWT в Python (библиотека `pyjwt`):**
```
import jwt
secret_key = "your_secret_key"
payload = {"user_id": 123, "exp": 1735689600} # exp — срок действия
token = jwt.encode(payload, secret_key, algorithm="HS256")
print(token) # Вывод: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
```
**Как это работает:**
- Клиент отправляет логин/пароль, сервер проверяет их и генерирует JWT.
- Сервер отправляет токен клиенту, который сохраняет его (например, в localStorage).
- Клиент прикрепляет токен к заголовку `Authorization: Bearer <token>` при каждом запросе.
- Сервер проверяет подпись и данные токена перед выполнением запроса.
**Плюсы:**
- Stateless (не требует хранения сессий на сервере).
- Подходит для микросервисов и мобильных приложений.
**Минусы:**
- Нельзя отозвать токен до истечения `exp` (решается через черные списки или короткий срок жизни).
- Уязвим к XSS-атакам, если хранить в localStorage.