Как тестируешь авторизацию API
Вопрос
Как ты тестируешь аутентификацию и авторизацию в API?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Аутентификация: без токена, с битым, просроченным, чужого окружения, с изменённой подписью: 401
Авторизация по ролям: матрица роль на эндпоинт, привилегированные методы токеном низшей роли: 403
Чужие объекты по id (IDOR/BOLA) во всех методах, включая PUT и DELETE
Mass assignment и лишние поля в ответах
Жизненный цикл: выход отзывает токены, смена пароля, ротация refresh, брутфорс ограничен
Что могут спросить следом
- Что вернуть на чужой заказ: 403 или 404?
- Как проверить, что после выхода токен не работает?
- Что проверишь в самом JWT?
Разбор
Я делю на две части. Аутентификация: запросы без токена, с мусором вместо токена, с просроченным, с токеном от другого окружения, с JWT, где поменял payload или поставил alg none: везде жду 401 и одинаковое сообщение, без подсказок, что именно не так. Авторизация: строю матрицу ролей и эндпоинтов и каждый привилегированный метод зову токеном роли ниже, жду 403. Отдельно IDOR: двумя пользователями пробую читать, менять и удалять объекты друг друга по id, это самый частый реальный баг. Потом mass assignment: добавляю в тело role или balance и смотрю, не изменилось ли. И жизненный цикл: после выхода и смены пароля старые токены не работают, refresh одноразовый, на подбор пароля стоит лимит. На вопрос, 403 или 404 на чужой объект, отвечу так: 404 не раскрывает, что объект существует, это допустимо, главное единообразие и отсутствие данных в ответе.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.