Базовая аутентификация Asp.Net WebApi Identity и 2FA - PullRequest
0 голосов
/ 01 октября 2019

У меня есть проект asp.net webapi (net framework) с базовой аутентификацией (на основе идентификатора aps.net), который выполняется с использованием фильтров, как описано здесь: https://docs.microsoft.com/en-us/aspnet/web-api/overview/security/authentication-filters,, так что доступ к методам APIконтролируется фильтрами IdentityBasicAuthentication и Authorize.

Я бы хотел реализовать двухфакторную аутентификацию.

Вот что я собираюсь сделать:

  1. Интерфейс отправляет «базовую аутентификацию» взаголовок, если пара имя пользователя / пароль верна, и у пользователя включен 2fa, тогда я отправляю ответный вызов: '2fa-token', включая временный 2fa-токен, в противном случае просто отправляю ответ обратно без вызовов с 200.
  2. ВнутреннеЯ отправляю пользователю смс / мейл код подтверждения.
  3. Если пользовательский интерфейс получает вызов 2fa-token, пользователь видит всплывающее окно с вводом кода.
  4. Клиент должен выполнить метод API, например TwoFactorCodeCheck (строка 2faCode, строка 2faToken UserCredentials uc)
  5. Если все верно, я отправляю обратно постоянный токен 2fa, который может быть сохранен в файлах cookie и будет использоватьсяв каждом последующем запросе webapi. В противном случае я отправляю запрос «WWW-Authenticate», и пользователю нужно будет снова пройти процесс.
  6. Добавить фильтр, который сможет считывать токен 2fa перманента из заголовка и аутентифицировать пользователя для выполнения методов webapi. Если запрос выполнен с использованием 2f постоянного токена, но срок его действия уже истек, я отправляю снова «WWW-Authenticate» и 401.

Звучит хорошо?

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

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

Почему-то я не могу найти ни одного примера, где бы люди смешивали простой базовый auth + 2fa.

Спасибо.

...