Вопрос проверяет понимание основных способов авторизации и того, как они используются в современных веб-приложениях.
Существует несколько распространённых видов авторизации: сессии (cookie-based), токены (JWT, Bearer-токены), OAuth 2.0, API-ключи, Basic/Digest Auth и mTLS. Сессионная авторизация удобна для браузеров, токены — для мобильных и распределённых систем. OAuth позволяет делегировать доступ между сервисами. API-ключи применяются для сервисных интеграций. Каждый метод имеет свои плюсы и ограничения в зависимости от архитектуры.
Авторизация определяет, кто пользователь и какие действия ему разрешены.
Определение:
Сессионная авторизация — метод, при котором сервер хранит состояние сессии пользователя, а в браузере — идентификатор сессии.
Особенности:
сервер хранит данные (session store);
подвержено CSRF, нужно применять защиты;
хорошо подходит для классических веб-приложений.
токен содержит полезные данные и подпись;
сервер не хранит состояние;
удобно для микросервисов и SPA.
простой непрозрачный токен;
сервер проверяет его через хранилище (Redis, БД).
Используется для делегирования доступа:
даёт приложению работать от имени пользователя;
применяется в Google, GitHub, Facebook;
подходит для third-party интеграций.
простой ключ, выдаётся сервису;
ограниченный набор прав;
часто используется в публичных API.
встроены в HTTP;
подходят для внутренних или защищённых сервисов;
редко используются для публичных приложений.
клиент и сервер подтверждают личность сертификатами;
применяется в безопасных корпоративных средах.
Разные виды авторизации подходят для разных архитектур: сессии — для браузеров, токены — для API, OAuth — для делегирования, API-ключи — для интеграций, mTLS — для защищённых систем.