Гибридная аутентификация Windows + Forms в приложениях ASP.Net. Архитектурный совет искал пожалуйста

Я хотел бы добиться гибридной аутентификации Windows & Forms для наших веб-приложений ASP.NET. Я видел детали нескольких способов сделать это, некоторые на Stackru, от простого перенаправления до решения OWIN, которое выглядит довольно устрашающе, и я, честно говоря, не могу следить за тем, что происходит! Я мог бы действительно использовать некоторые советы по архитектуре, пожалуйста!

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

Я хотел бы, чтобы пользователи, которые вошли в нашу корпоративную AD, могли получить доступ к этим приложениям, не проходя проверку подлинности с помощью форм. В то время как не корпоративные пользователи, такие как клиенты или корпоративные пользователи, которые не вошли в AD (например, сотрудник, использующий компьютер у клиента), отправляются в форму для аутентификации.

Рассматривая то, что я прочитал до сих пор:

  • Простое перенаправление.

Подходы, такие как этот - https://msdn.microsoft.com/en-us/library/ms972958.aspx и http://mvolo.com/iis-70-twolevel-authentication-with-forms-authentication-and-windows-authentication/ - все еще использовать аутентификацию форм. Но цель URL входа в систему - это страница aspx, которая защищена с помощью аутентификации Windows. Пользователи, прошедшие аутентификацию в домене, могут получить доступ к этой странице, поэтому имя пользователя Windows может быть отменено и использовано для создания обычной формы заявки. Пользователи, не входящие в домен, получат ошибку 401 с отказом в разрешении, если IIS настроен на перенаправление таких ошибок в обычную форму проверки подлинности.

Это кажется простым подходом, но я думаю, (а) он не будет работать для меня, потому что веб-сервер находится в демилитаризованной зоне, которая не имеет доступа к нашей AD, и (б) большинство ссылок на эту технику кажется довольно старым, поэтому я думаю, это устаревший подход.

  • Windows Identity Foundation.

Мне очень нравится этот подход. Я изучил некоторые материалы о Pluralsight, но наши точные требования не рассматриваются. У нас есть AD FS 2.0 (скоро я буду обновлен до 3.0, я понимаю). Возможно ли, чтобы пользователи домена направлялись в AD FS, действующую как STS, для получения токена, а пользователи, не являющиеся доменами, направлялись к простой STS в DMZ для аутентификации по имени пользователя / паролю? Из диаграмм, которые я видел, видно, что WIF может доверять более чем одной STS, но может ли пользователь автоматически направляться на конкретную STS, в зависимости, например, от IP-адреса или другого способа различения внутреннего / внешнего доступа?

Кроме того, я видел довольно много Powerpoints вокруг этой темы, но кто-то может указать мне в направлении некоторых конкретных примеров, так как я, кажется, не могу найти ни одного.

  • Owin / катана.

Похоже, что сейчас это излюбленный путь, поскольку новые проекты ASP.NET добавляются с самого начала. Опять же, я посмотрел несколько видео Pluralsight. Я следовал идее конвейера запросов и промежуточного программного обеспечения (я часто использовал BizTalk, чтобы концепция была знакома). Но я потерял сюжет, когда дело дошло до промежуточного ПО аутентификации. Я должен буду повторно посетить материал. Я нашел этот код, который говорит, что он делает то, что я хочу - https://github.com/MohammadYounes/MVC5-MixedAuth/tree/WindowsFirst - но, честно говоря, это было за пределами моего понимания.

Может кто-нибудь, пожалуйста, сообщите мне, можно ли использовать Katana для достижения того, чего я хочу, и существует ли более простой метод, чем используемый в этом примере кода?

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

1 ответ

Самое простое решение - установить ADFS Proxy / WAP.

Затем, используя разделенный DNS, внешние пользователи перенаправляют на прокси-сервер (FBA), а внутренние пользователи перенаправляют на внутреннюю ADFS (IWA).

Проблема с WIF / OWIN и т. Д. Заключается в том, что они доставляют вас в ADFS, но не определяют способ аутентификации ADFS.

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