1.12M
Category: softwaresoftware

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
приводит к уязвимостям и архитектурным ошибкам.
English     Русский Rules