Двухфакторная аутентификация с базовой аутентификацией для REST API?

Я реализую REST API, в котором есть как мобильные приложения, так и клиенты и пользователи на основе браузера. Основываясь на вопросах, которые я задавал, и на предыдущих вопросах здесь и в security.stackexchange, я пришел к выводу, что для того, чтобы оставаться "RESTful" как можно дольше, базовой аутентификации HTTP поверх SSL достаточно для аутентификации. Проблема в том, что я также хотел бы реализовать двухфакторную аутентификацию вместе с ней. Допустимо ли добавлять заголовки в ответ заголовка авторизации 401, например имя пользователя: пароль: токен, или в совершенно отдельный заголовок запроса, но в ту же полезную нагрузку, что и базовый ответ аутентификации клиента? Поскольку я использую node.js + express/connect, у меня есть доступ ко всему стеку HTTP-протоколов, но я хочу оставаться максимально спокойным из-за масштабируемости. На стороне браузера, я думаю, я мог бы выполнить базовую аутентификацию, и, если она прошла, попросить токен TFA, и только если он пройдет, считается, что пользователь аутентифицирован.

1 ответ

Решение

Технически вы можете создать новые схемы аутентификации для расширения от HTTP Basic Auth, но они обычно не поддерживаются браузерами. В вашем примере я не верю, что какой-либо браузер сможет запрашивать и отправлять токен username: password: таким же образом, как они могут легко запрашивать имя пользователя и пароль.

Обычно двухфакторные схемы аутентификации работают, переводя пользователя в промежуточное состояние с использованием некоторой формы сеансов, как вы упомянули во втором примере. Пользователь, который передал первый фактор, скажем, имя пользователя / пароль через Basic Auth, открыл сеанс, но не пометил его как действительно вошедшего в систему, пока он также не пройдет второй фактор. Ввод кода ключа или что-то в этом роде. Как только оба фактора пройдены, их сеанс помечается как полностью авторизованный, и они могут получить доступ к своей учетной записи / данным / чему угодно.

Другие вопросы по тегам