Использование Windows Identity Foundation для входа в приложение ASP.net - PullRequest
6 голосов
/ 24 декабря 2009

Мой руководитель в офисе говорит мне, что он видел демонстрацию с предварительной версией Microsoft «Женева» (теперь Windows Identity Foundation), где разработчик сделал следующее:

  1. Он установил какое-то веб-приложение ASP.net, где пользователь может войти в систему, используя настроенную систему входа. За кулисами веб-приложение регистрирует пользователя как пользователя в Active Directory.

  2. Пользователь входит в систему.

  3. Как только пользователь вошел в систему, поток веб-приложений ASP.net запускается как вошедший в систему пользователь в течение сеанса пользователя и может получать доступ к ресурсам в сети (например, запускать запросы SQL для таблиц, чьи доступ контролируется Active Directory)

Шаги 2) и 3) в точности совпадают с использованием параметра «Встроенная проверка подлинности Windows» на вкладке «Безопасность каталога» настроек веб-сайта в IIS. Шаг 1) отличается тем, что мы используем настраиваемую систему входа в систему, а не аутентификацию Kerberos.

Мы хотим настроить одно из наших приложений для работы точно так, как описано в 1), 2) и 3). Однако вся документация, которую я видел относительно Windows Identify Foundation, касается Cardspace и Federated Security. Мы сейчас не заинтересованы в использовании любой из этих технологий.

Мы просто хотим, чтобы пользователи могли входить в учетные записи Active Directory за кулисами.

Да, мы опробовали ActiveDirectoryMembershipProvider с Forms Authentication, но это полный барьер для фактического доступа к ресурсам в сети, требующим олицетворения на каждой странице!

ОБНОВЛЕНИЕ 7 января 2010 года. Хорошо, я работал над этим некоторое время, и все, что мне удалось придумать, не соответствует тому, чего я хочу достичь. Возможно, нужной мне функциональности нет в версии WIF.

Вот где я сейчас. Я нашел некоторую документацию по MSDN, в которой указано, что в ASP.net используются три разных идентификатора: идентификатор, указанный в HttpContext.Current.User, идентификатор, указанный в Thread.CurrentPrincipal, и, наконец, идентификатор, указанный в WindowsIdentity.GetCurrent. ссылка

В одном примере, где я хочу использовать процесс, который я ищу, я хочу выполнить SQL-запрос как зарегистрированный пользователь. В моем отладчике я вижу, что я легко устанавливаю пользователей HttpContext и Thread для вошедшего в систему пользователя. Однако когда я подключаюсь к серверу SQL с использованием аутентификации Windows, он всегда всегда подключается как пользователь WindowsIdentity.GetCurrent, и этот пользователь всегда всегда является удостоверением процесса ASP.net, если только я не использую аутентификацию Windows с имитацией. Я абсолютно не могу использовать Аутентификацию Windows с моим приложением, потому что мои пользователи должны войти в систему, играя песню «Волшебная флейта», а аутентификация Windows не поддерживает вход в систему с песнями «Волшебная флейта».

Чтобы уточнить, нет проблем с получением WindowsIdentity, представляющего вошедшего в систему пользователя (который вошел в систему с волшебной флейтой). Проблема в том, что я не могу использовать этот WindowsIdentity для выполнения запросов SQL для моего пользователя.

Ответы [ 2 ]

5 голосов
/ 26 декабря 2009

WIF позволяет настроить его так, чтобы идентификационные данные на основе утверждений сопоставлялись с учетной записью AD. Заявка может быть федеративной идентификационной заявкой или доставлена ​​с помощью информационной карты. c2WTS выполняет эту функцию.

Даже когда он сопоставляется из-за делегирования, вам всегда придется делегировать, если вы хотите использовать идентификацию AD, под которой выдает себя IIS - это просто так, если вы не настроите Делегирование Kerberos для IIS

1 голос
/ 26 декабря 2009

Вы можете достичь того же, используя Identity Impersonation в ASP.net. Также вам нужно включить встроенную аутентификацию Windows для вашего веб-приложения. Это решит цель. Если вошедший в систему пользователь не имеет необходимых прав для доступа к ресурсам, вы получите исключения безопасности, с которыми вам придется работать.

...