Использование Foundation Windows Identity Foundation для входа в приложение ASP.NET

StackOverflow https://stackoverflow.com/questions/1958596

  •  21-09-2019
  •  | 
  •  

Вопрос

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

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

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

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

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

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

Мы просто хотим иметь возможность войти в учетные записи Active Directory за кулисами.

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

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

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

В одном примере того, где я хочу использовать процесс, который я хочу разработать, я хочу выполнить запрос SQL в качестве зарегистрированного пользователя. В моем отладчике я вижу, что я легко устанавливаю пользователя HTTPContext и потока пользователю. Однако, когда я подключаюсь к серверу SQL с помощью аутентификации Windows, он всегда всегда подключается как WindowsIdentity.GetCurrent Пользователь и этот пользователь всегда всегда является идентификацией процесса ASP.NET, если я не использую аутентификацию Windows с подражанием. Я абсолютно не могу использовать аутентификацию Windows с моим приложением, потому что мои пользователи должны войти в систему, воспроизводив песню Magic Flute, а аутентификация Windows не поддерживает вход с песнями Magic Flute.

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

Это было полезно?

Решение

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

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top