В чем разница аутентификации и авторизации
Что проверяют
Умеете ли вы описывать доступы в требованиях так, чтобы разработчик и тестировщик поняли одинаково. Для аналитика это вопрос про матрицу прав, а не про пароли.
Как отвечать
Аутентификация это подтверждение личности: пользователь доказывает, что он тот, за кого себя выдаёт. Авторизация это правила доступа: что именно опознанному пользователю разрешено делать с конкретным объектом.
Что из этого следует для постановки задачи:
- описывать надо оба процесса отдельно: способы входа (пароль, код из СМС, вход через провайдера, второй фактор), время жизни сессии, поведение при неверных попытках, восстановление доступа. И отдельно права;
- матрица доступа: роли по строкам, действия и объекты по столбцам, в ячейках разрешено или нет. Это самый понятный формат для разработки и тестирования;
- не только роль, но и связь с объектом: менеджер видит заявки своего отдела, клиент только свои заказы. Такие правила формулируются явно, иначе разработчик реализует доступ «по роли вообще»;
- сценарии отказа: что показывать при отсутствии прав, скрывать раздел или показывать сообщение, что писать в журнал;
- особые случаи: делегирование прав, временный доступ, работа от имени другого пользователя, доступ поддержки, и обязательно их аудит.
Полезно назвать связку с требованиями безопасности: журналирование входов и изменений прав, срок хранения записей, кто может менять роли.
Где спотыкаются
Пишут в требованиях «доступ по ролям» и не приводят матрицу, после чего каждый понимает по-своему.
Забывают правила на уровне объекта и получают дыру: пользователь открывает чужую запись по ссылке.
Не описывают, что происходит при истечении сессии посреди заполнения формы, и данные пользователя теряются.