Заранее извиняюсь, если этот вопрос лучше подходит для другого сайта StackExchange; это казалось лучшим первым выбором.
Задний план
У меня есть веб-приложение (.NET Framework, веб-формы ASP.NET и MVC), работающее на IIS (любой версии). Приложение не имеет логики проверки подлинности, вместо этого полагаясь только на IIS, настроенный для проверки подлинности Windows (согласование); затем приложение обращается к HttpContext.Current.User.Identity.Name для получения пользователя Windows.
Мне было поручено добавить MFA в процесс входа в систему, но я столкнулся с препятствием, если это вообще возможно. Ниже мое текущее понимание и почему я считаю, что это невозможно; мой вопрос, не пропустил ли я что-то.
Цели:
- Когда конечный пользователь подключается к приложению, требуется проверка двухфакторной аутентификации.
- Нет изменений уровня приложения
Текущее понимание:
- При проверке подлинности Windows пользователь уже прошел проверку подлинности, и задача IIS состоит только в том, чтобы включить текущий токен проверки подлинности вместе с запросом.
- Раньше у IIS была возможность прервать этот поток и перенаправить вызов MFA через сервер MFA Microsoft, но эта функция была прекращена и больше недоступна.
- В настоящее время нет других доступных вариантов прерывания потока аутентификации IIS.
- Потенциальный вариант № 1 — переработать приложение, чтобы включить логику аутентификации (скорее всего, в сторону OAuth / OpenID Connect) и вызвать вызов MFA в этот момент.
- Потенциальный вариант № 2. Поместите прокси-сервер приложения между конечным пользователем и приложением; прокси-сервер приложения потребует входа в систему плюс MFA, а затем перенаправит приложение.
Я нахожусь в той точке, где я знаю достаточно, чтобы понять, что знаю недостаточно, но мне не хватает того, что еще нужно понять, чтобы копнуть дальше.
Правильно ли я понимаю аутентификацию Windows и доступные варианты для достижения MFA, или я упускаю что-то еще, что поможет мне двигаться вперед?