Similar presentations:
JWT плюсы и минусы
1.
JWT как архитектурноерешение: плюсы и минусы
Выполнил студент БИБ242
Буланов А.В.
2.
Введение. Понятие JWT и областьприменения
JSON Web Token (JWT) -это открытый стандарт (RFC
7519), описывающий способ безопасной передачи
утверждений между сторонами в формате JSON.
JWT
широко
применяется
в
системах
аутентификации и авторизации, особенно в вебприложениях, REST API, мобильных клиентах и
микросервисных архитектурах. Его популярность
связана с ростом распределённых систем, где
хранение состояния пользователя на одном сервере
становится затруднительным.
Основная идея JWT заключается в том, что сервер
выдаёт клиенту токен, содержащий информацию о
пользователе
и
его
правах,
подписанный
криптографическим ключом. Клиент передаёт этот
токен при каждом запросе, а сервер проверяет его
подлинность без обращения к централизованному
хранилищу сессий.
3.
JWT и сессионная аутентификация:принципиальные отличия
В традиционной модели сессионной аутентификации после успешного входа пользователя сервер создаёт
сессию и сохраняет её состояние (идентификатор пользователя, время жизни, дополнительные атрибуты) в
базе данных или кэше. Клиенту передаётся только идентификатор сессии, который используется для
последующей идентификации.
JWT реализует принципиально иной подход — stateless-аутентификацию. Сервер не хранит состояние
пользователя, а вся необходимая информация передаётся внутри токена. Проверка подлинности запроса
сводится к проверке подписи JWT и его срока действия. Таким образом при использовании JWT: сервер не
знает, активна ли сессия пользователя, отсутсвует единаяч точка контроля всех пользователей,
управление доступом переносится с сервера на архитектурный уровень
4.
КритерийСессионная
аутентификация
JWT-аутентификация
Хранение состояния
Сервер хранит сессию
Сервер не хранит состояние
Что хранит клиент
ID сессии
Полный токен
Проверка запроса
По ID сессии в хранилище
По подписи токена
Stateless / Stateful
Stateful
Stateless
Отзыв доступа
Возможен сразу
Только после истечения токена
Блокировка пользователя
Мгновенная
Отложенная
Ограничена
Высокая
Полный
Ограниченный
Масштабируемость
Контроль со стороны сервера
5.
Основное заблуждение: JWT ≠ сессияОдним из ключевых архитектурных заблуждений является утверждение, что JWT может полностью
заменить серверную сессию. На практике JWT решает только задачу идентификации, но не управления
состоянием.
Серверная сессия: может быть немедленно завершена; всегда отражает актуальное состояние
пользователя; позволяет централизованно управлять доступом.
JWT: остаётся валидным до истечения срока действия; не учитывает изменения прав или статуса
пользователя;не может быть отозван без дополнительных механизмов.
Следовательно, JWT не является эквивалентом сессии, а
приводит к потере контроля над системой аутентификации.
попытка использовать его в этой роли
6.
7.
Архитектурные проблемы JWT (ACL,блокировки, отзыв доступа)
Хранение ACL: Если права доступа (ACL) включены в JWT, они становятся неизменными до истечения
срока действия токена. Это создаёт проблемы в системах, где роли и разрешения могут часто меняться.
Альтернативный вариант — хранить ACL централизованно и использовать JWT только как идентификатор
пользователя, но это снижает преимущества stateless-подхода.
Блокировка пользователей: В случае блокировки аккаунта JWT не теряет валидности. Пользователь
может продолжать выполнять запросы, пока токен не истечёт. Это особенно критично для систем с
повышенными требованиями к безопасности.
Отзыв доступа :Для решения проблемы отзыва токенов используются дополнительные механизмы:
короткоживущие access-токены;refresh-токены;blacklist токенов;проверка состояния пользователя в БД.
Каждое из этих решений увеличивает сложность системы и частично возвращает stateful-логику
8.
Атаки на системы аутентификации набазе JWT
Кража токена: JWT часто хранится на клиенте в localStorage или sessionStorage, что делает его уязвимым
для XSS-атак. Получив токен, злоумышленник может использовать его до истечения срока действия.
Replay-атаки: Перехваченный токен может быть повторно использован, так как JWT не привязан к
конкретному соединению или устройству.
Использование долгоживущих токенов: Увеличивает время, в течение которого скомпрометированный
токен остаётся действительным.
Ошибки конфигурации: Неправильная проверка подписи, игнорирование поля alg или отсутствие
валидации issuer и audience могут привести к принятию поддельных токенов.
Отсутствие механизма отзыва: При компрометации токена невозможно немедленно ограничить доступ
без дополнительных архитектурных решений.
9.
10.
Преимущества и недостаткииспользования JWT
Преимущества: высокая масштабируемость; снижение зависимости от централизованных хранилищ;
удобство для микросервисных систем; стандартный и широко поддерживаемый формат.
Недостатки: отсутствие управления состоянием; сложности с безопасным хранением токена;
повышенные риски при ошибках реализации;усложнение архитектуры при необходимости контроля
доступа
11.
Заключение и выводыJWT является мощным архитектурным инструментом, но его использование требует чёткого понимания
его ограничений. JWT не заменяет серверную сессию и не предназначен для управления
пользовательским состоянием. Его применение оправдано в системах с невысокой динамикой прав
доступа и при использовании дополнительных механизмов защиты. Неправильное понимание роли JWT
приводит к уязвимостям и архитектурным ошибкам.
software