WedX - журнал о программировании и компьютерных науках

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

Мой руководитель в офисе сказал мне, что видел демонстрацию предварительной версии Microsoft «Geneva» (теперь 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 Identification 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-запросов для моего пользователя.

24.12.2009

Ответы:


1

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

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

26.12.2009
  • Мой руководитель очень конкретен, что он не хочет использовать олицетворение. Кроме того, конечный пользователь будет входить в систему, играя песню на волшебной флейте. Если песня правильная, то пользователь программно входит в систему, используя учетную запись AD. Я абсолютно не могу обойти тот факт, что пользователь входит в систему, играя песню на волшебной флейте. Что мне нужно, так это какой-то способ заставить программу вести себя так, как если бы они вошли в систему с проверкой подлинности Windows, как только они правильно сыграют песню волшебной флейты. 29.12.2009
  • Нет, вы просите невозможного. Аутентификация Windows использует олицетворение, и если ваш руководитель говорит, что вы не можете его использовать, то вы не можете имитировать аутентификацию Windows. 29.12.2009
  • Спасибо, бладдарт. Я должен исправить себя. Я имел в виду, что когда вы используете проверку подлинности Windows с IIS, веб-сервер прозрачно олицетворяет вошедшего в систему пользователя. При проверке подлинности с помощью форм мне приходится выполнять олицетворение программно, чего мы хотим избежать; кажется, что AdMembershipProvider мне в этом совсем не помогает. Я не могу выдавать себя за файл cookie проверки подлинности с помощью форм. Мой суп. говорит, что он видел демонстрацию, где Женева каким-то образом использовалась, чтобы сделать так, чтобы пользователь автоматически входил в систему с учетной записью AD, даже если пользователь входит в систему со своей песней на волшебной флейте. 30.12.2009
  • Кроме того, blowdart, чтобы уточнить, что я имел в виду, говоря, что AdMembershipProvider не помогает мне с олицетворением; Я имею в виду, что мне нужно вручную вызвать функцию Win32 LogonUser и использовать возвращаемый ею токен, чтобы выдать себя за вошедшего в систему пользователя. Какая херня! Должен быть лучший способ. 30.12.2009
  • Ну, Windows Auth выдает себя за точку. Однако, вернувшись к исходному ответу, WIF может сопоставлять токены с конкретными пользователями и олицетворять их. 30.12.2009
  • Я полагаю, что, возможно, я перепутал проблему с разговором о олицетворении. Мне нужно, чтобы мой пользователь вошел в систему с песней волшебной флейты, и это было точно так же, как если бы пользователь вошел в систему с проверкой подлинности Windows. 31.12.2009
  • Как я сказал изначально, да, это возможно. Весь ваш бред про волшебные флейты больше всего запутывает вопрос. 31.12.2009

  • 2

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

    26.12.2009
    Новые материалы

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

    ИИ в аэрокосмической отрасли
    Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


    Для любых предложений по сайту: [email protected]