Какие существуют методы авторизации
qa engineerавторизацияаутентификациябезопасностьметоды авторизации
Что проверяют
Различаете ли вы аутентификацию и авторизацию и знаете ли, чем схемы отличаются по хранению состояния и по рискам.
Как отвечать
Сначала терминология: аутентификация это «кто вы», авторизация это «что вам можно». Вопрос обычно про схемы передачи и проверки удостоверения.
- Basic: логин и пароль в заголовке, кодировка base64, а не шифрование. Только внутри HTTPS и обычно только для служебных вещей;
- сессии и cookie: сервер хранит сессию, клиент присылает идентификатор. Легко отозвать, но состояние на сервере, и нужна защита от подделки межсайтовых запросов (
SameSite, токен формы); - токены, обычно JWT: подписанный токен, состояние на клиенте. Масштабируется, но отозвать досрочно нельзя, отсюда короткий срок жизни и refresh-токен;
- API-ключи: для сервис-сервис, без пользователя. Ограничиваются по адресу и правам;
- OAuth 2.0 и OpenID Connect: вход через стороннего провайдера. OAuth про делегирование доступа, OIDC надстройка над ним про личность;
- двухфакторность: одноразовый код или ключ, поверх любой из схем.
Модели прав: роли (RBAC) и атрибуты (ABAC), когда решение зависит от свойств пользователя и ресурса.
Где спотыкаются
Называют Basic безопасным, потому что «там base64».
Считают JWT зашифрованным. Он подписан, но читается кем угодно, класть в него секреты нельзя.
Хранят токен в localStorage, не упоминая риск при межсайтовом скрипте.
Не проверяют доступ к чужому ресурсу: аутентификация есть, авторизации нет, и это самая частая реальная дыра.