Проверка подлинности имени пользователя и пароля для WIF (Windows Identity Foundation) в ASP.NET MVC

У нас есть два существующих устаревших веб-приложения: одно для интрасети, использующее проверку подлинности Windows в домене, и одно интернет-приложение, выполняющее настраиваемую проверку подлинности на основе имени пользователя и пароля веб-форм. Сейчас разрабатываются новые веб-приложения, которые будут доступны в Интернете как для пользователей Интернета, так и для пользователей интрасети, поддерживающие обе модели аутентификации. Поэтому мы решили использовать WIF. Мы собираемся использовать ASP.NET 4.5 MVC 4 на Windows Server 2012.

Аутентификация в интрасети не должна быть проблемой, поскольку здесь мы можем использовать ADFS 2.0.

Но в настоящее время мы не знаем, как решить аутентификацию по имени пользователя и паролю. Похоже, нам нужно разработать собственный UserNameSecurityTokenHandler для аутентификации пользователей, которые предоставляют информация об имени пользователя и пароле, которая проверяется нашим индивидуальным поставщиком членства. Но мне нужна помощь со всем рабочим процессом ...

Предположим, что у нас есть настраиваемая страница входа в систему для пользователей Интернета; и предположим, что нам удалось перенаправить интернет-пользователей на эту страницу входа (в ASP.NET MVC), что здесь отсутствует в действующем токене? Каким образом форма или действие контроллера MVC, получившее указанное имя пользователя и пароль, будут запускать настроенный поставщик удостоверений WIF?


person thmshd    schedule 18.10.2012    source источник


Ответы (1)


Самым элегантным решением было бы создать еще одну службу STS для внешних пользователей и сделать так, чтобы ADFS доверяла ей как провайдеру удостоверений:

введите описание изображения здесь

Внешние пользователи будут перенаправлены на IdP STS, который будет использовать базу данных usr / pwd. Внутренние пользователи будут проходить аутентификацию через ADFS напрямую (против AD).

В этом сценарии ADFS действует как IdP и как поставщик федерации.

Чтобы это работало, вам нужны как ADFS, так и IdP (и приложение), подключенные к Интернету. STS, который вы можете использовать, используя членство, - это IdentityServer с открытым исходным кодом, и вы, конечно, можете настроить его для своих потребности.

С этой архитектурой вам не нужны какие-либо специальные настройки / расширения в приложении. Однако вам нужно будет заняться «обнаружением домашнего мира». Это процесс определения того, где аутентифицировать пользователей (например, в интранете или экстранете). Предположительно, у вас могут быть разные URL-адреса и т. Д.

person Eugenio Pace    schedule 18.10.2012
comment
Сервер идентификации выглядит отлично, я посмотрю, сможем ли мы его использовать. Спасибо за вашу помощь - person thmshd; 18.10.2012
comment
Спасибо, я наконец принял это, даже если мы решили не использовать IdentityServer, но это указывало мне на правильное направление в этой теме. - person thmshd; 11.11.2012