2016-01-23 6 views
3

Мне нужно создать веб-страницу ASP.NET (размещенную на Windows Server 2008R2 с IIS 7.5), которая должна быть видна пользователям домена и анонимным пользователям без запроса учетных данных для обоих из них. Пользователям домена должно быть разрешено просматривать всю страницу, а анонимные пользователи могут видеть общедоступную часть страницы.IIS Mixed Anonymous и Windows Authentication

  • Когда я включить проверку подлинности Windows, могут видеть пользователей домена всей страницы, но анонимные пользователи ввести учетные данные.
  • Когда я включаю анонимную аутентификацию или обе (анонимно и windows): анонимные пользователи могут видеть общедоступную часть страницы, но пользователи домена не видят всей страницы (они как анонимные пользователи).

Я использую следующую строку для различения анонимных пользователей и пользователей домена:

WindowsAccountName = HttpContext.Current.Request.LogonUserIdentity.Name;

Если имя WindowsAccountName пусто, пользователь является анонимным, в противном случае является пользователем домена. К сожалению, когда включена анонимная аутентификация, WindowsAccountName всегда пуст (даже для пользователей домена), но когда анонимная аутентификация отключена, пользователям, не являющимся доменами, предлагается ввести учетные данные.

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

это выглядит как улов-22 для меня

Спасибо.

ответ

3

Термин для этого - аутентификация в смешанном режиме. Я делал это несколько раз.

Это может быть сделано с использованием сайта, прошедшего проверку подлинности Windows, который больше не пытается вывести учетные данные пользователей из AD и передать их анонимному сайту. Я сделал это, используя специальный билет (GUID в базе данных), срок действия которого истекает через 5 секунд. Анонимный сайт принимает переданный GUID, запрашивает БД и получает идентификатор пользователя. Другими способами я сделал это с зашифрованным параметром URL, который содержит идентификатор пользователя и отметку времени.

внутренний сайт

Создание Перенаправление URL сайта: Установка этого сайта, как Window Auth, так что вы можете вытащить идентификатор пользователя из Active Directory. Дайте вашим пользователям этот URL-адрес и/или сделайте ссылку, которую они нажимают на вашу интрасеть. Затем этот сайт вызывает ваш анонимный сайт и передает учетные данные пользователя (идентификатор входа).

a. Это можно сделать либо зашифрованной строкой по URL-адресу, либо зашифрованным значением в файле cookie. Вы также можете зашифровать с указанием даты и времени истечения срока.

b. (Выступая из формы Auth) Создайте Билет проверки подлинности форм с этим идентификатором пользователя. Запустите любую другую логику входа. Готово.

Внешний сайт - Нет изменений не требуется. Позвольте пользователям войти в систему как есть.

+0

Вы написали «Создайте сайт URL-адреса перенаправления: установите этот сайт как окно Auth, чтобы вы могли вывести идентификатор пользователя из Active Directory.», но если пользователь, не являющийся доменом, получает доступ к этому сайту, ему предлагается ввести учетные данные, правильно? – Michele

+0

Michele, это двухэтапный подход. Настройте сайт, который является Windows Auth, для получения учетной записи пользователя из активного каталога. пользователь не получит запрос, затем вытащите идентификатор пользователя из AD, затем закрепите его (как упоминалось выше) и передайте его на анонимный сайт, на котором вы обрабатываете логин на этом сайте. Для конечного пользователя это прозрачно. должны иметь анонимный доступ, только они переходят непосредственно на целевой (неактивный каталог/анонимный) сайт. –

+0

@RegencySoftware. Могу ли я предположить, что это может привести к двум URL-адресам для одного и того же приложения? Будет ли это по-прежнему иметь место для IIS8 (WIn2012) –