Как происходит аутентификация по JWT
Python
Senior
Без компании
Как происходит аутентификация по JWT
Ответы
JWT (JSON Web Token) — это стандарт для создания токенов доступа, основанный на JSON. Аутентификация происходит так:
- **Клиент** отправляет логин/пароль на сервер.
- **Сервер** проверяет данные, генерирует JWT (обычно с `user_id`, `exp` — сроком действия) и подписывает его секретным ключом (или RSA).
- **Клиент** сохраняет токен (обычно в `localStorage` или `cookie`) и отправляет его в заголовке `Authorization: Bearer <token>`.
- **Сервер** проверяет подпись токена и его валидность (не истёк ли срок).
Пример кода (Python, `PyJWT`):
```
import jwt
from datetime import datetime, timedelta
# Генерация токена
secret = "super-secret-key"
payload = {"user_id": 1, "exp": datetime.utcnow() + timedelta(hours=1)}
token = jwt.encode(payload, secret, algorithm="HS256")
# Проверка токена
try:
decoded = jwt.decode(token, secret, algorithms=["HS256"])
except jwt.ExpiredSignatureError:
print("Токен истёк!")
```
**Важно:** JWT не шифрует данные (если не используется JWE), а только подписывает. Для безопасности используйте HTTPS и короткие сроки жизни токенов.