Членство в ASP.NET. Могу ли я разрешить анонимный доступ и по-прежнему использовать автоматический вход с помощью Active Directory?

Я надеюсь, что это не парадоксально, но я не знаю, как это должно быть сделано...

У меня есть проект VS2008 ASP.NET MVC со следующей записью Web.Config:

  <authentication mode="Windows">
      <forms name=".ADAuthCookie" timeout="10" />
  </authentication>

Это позволяет посетителю автоматически входить в систему со своим ДОМЕНОМ\имя пользователя, которое они использовали для входа в Windows. (Верно?)

Это работает с моим сервером разработки (http://localhost:xxxx), но не с моим сервером IIS (http://localhost). Вероятно, потому что сервер разработки «запускается» моим локальным пользователем (у которого есть права чтения ActiveDirectory в домене) и потому, что IIS «запускается» пользователем IUSR_WORKSTATION, который этого не делает. (Верно?)

Если все вышеперечисленное верно, как я могу выдать себя за пользователя IIS (например, под своим собственным именем пользователя), чтобы аутентифицировать только текущего пользователя с именем для входа в Windows? (как в примере ниже)?

Или пользователю IUSR_WORKSTATION следует предоставить ActiveDirectory? права чтения (не предпочтительно, так как я буду часто переключаться между серверами и пользователями IUSR_)

<identity impersonate="true" userName="DOMAIN\myuser" password="mypass"/>
<authentication mode="Windows">
    <forms name=".ADAuthCookie" timeout="10" />
</authentication>
<identity impersonate="false"/>

person Ropstah    schedule 14.05.2009    source источник


Ответы (1)


Аутентификация Windows плохо названа (IMO). Он не использует Windows в качестве аутентификации, а делегирует процесс аутентификации IIS. Итак, вам нужно настроить аутентификацию IIS, которая затем переходит в ASP.NET.

То, как вы это сделаете, зависит от вашей версии IIS, в IIS7 разверните дерево и щелкните свой веб-сайт, затем нажмите «Проверка подлинности» и включите проверку подлинности Windows.

person blowdart    schedule 14.05.2009
comment
А, это проясняет некоторые вещи. 1.) Так что я должен отключить анонимный доступ в IIS? 2.) Могу ли я настроить встроенный веб-сервер VS2008, чтобы он делал то же самое? (на вкладке безопасности в средстве администрирования веб-сайта ASP.NET появляется следующая ошибка: поставщик членства в Active Directory не настроен для поддержки методов поиска.) - person Ropstah; 14.05.2009
comment
Да, вам нужно будет отключить анонимный доступ, если все, что вам нужно, это люди в вашем AD, чтобы войти в систему. Cassini, встроенному тестовому серверу, просто нужна запись в файле конфигурации, это все, что ему нужно. - person blowdart; 14.05.2009