Примеры способов аутентификации
Что проверяют
Различаете ли вы аутентификацию и авторизацию и умеете ли для каждого способа назвать, что в нём ломается. От тестировщика ждут не перечисления, а проверок, которые вы из этого перечисления выведете.
Как отвечать
Аутентификация отвечает на вопрос «кто ты», авторизация «что тебе можно». Дальше по способам:
- логин и пароль, обычно с политикой сложности и блокировкой после серии неудач;
- второй фактор: одноразовый код в сообщении или в приложении-генераторе, подтверждение через push;
- беспарольный вход: ссылка на почту, код на телефон, ключ доступа в устройстве по WebAuthn;
- биометрия как локальная разблокировка секрета на устройстве, а не отправка отпечатка на сервер;
- токены: после успешного входа сервер выдаёт пару access и refresh, дальше клиент носит access в заголовке;
- вход через внешнего провайдера по OpenID Connect поверх OAuth 2.0;
- корпоративные схемы: SAML, Kerberos, вход по доменной учётной записи;
- машинные: ключ интеграции, взаимный TLS по сертификату, подпись запроса.
Дальше переходите к проверкам, ради которых вопрос и задан: истечение и отзыв токена, выход завершает сессию везде, смена пароля обнуляет старые сессии, ограничение попыток, одинаковый ответ при неверном логине и неверном пароле, запрет повторного использования одноразового кода, поведение при отключённом втором факторе, восстановление доступа.
Где спотыкаются
Называют JWT способом аутентификации. Это формат токена: его выдают после входа, сам по себе он никого не проверяет. Следом обычно спрашивают про подпись, срок жизни и отзыв, и ответ рассыпается именно на отзыве.
Называют OAuth 2.0 аутентификацией. Это протокол делегирования доступа, удостоверение личности даёт надстройка OpenID Connect со своим токеном. Путаница безобидна на словах и опасна в проверках: тестируют не то.
Проверяют только положительный сценарий. Дыры живут в углах: просроченный токен всё ещё принимается, refresh не отзывается при выходе, до формы второго фактора можно не доходить, обратившись к внутреннему адресу напрямую.