Как работает 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.