Заблокируйте сайт с помощью Forms Auth в IIS7 с Windows Auth

Я разместил это на странице Ошибка сервера, но так как в этом есть своего рода программный аспект, я тоже опубликую его здесь.

У меня есть приложение ASP.NET MVC 1.0, которое использует проверку подлинности с помощью форм. Мы используем Windows Server 2008. Мне нужно заблокировать сайт, чтобы только определенные пользователи (в группах AD) могли получить доступ к сайту. К сожалению, когда я настроил сайт, чтобы не разрешать анонимным пользователям и использовать проверку подлинности Windows, из-за интеграции сайта и IIS, он показывает, что пользователь вошел в систему в качестве учетной записи домена, вместо того, чтобы разрешать им вход через формы. Авт.

Итак, мне нужна аутентификация в смешанном режиме. Мне нужно, чтобы сайт был доступен только через авторизацию Windows, без анонимных пользователей, но как только вы войдете, ему нужно будет использовать только авторизацию форм. Как мне поступить правильно?

РЕДАКТИРОВАТЬ:

Вот пояснение. Сайт должен работать так.

  1. Вы переходите по URL-адресу, и появляется окно авторизации для входа в систему. Вы входите в систему с учетной записью домена, у которой есть доступ. Если у вас нет доступа, отображается ошибка 401.
  2. Если у вас есть доступ, вы попадаете на сайт. Однако сайт не использует ваше имя пользователя Windows auth. Он использует формы Auth. Итак, вам нужно войти на сайт, используя формы auth.

Проблема в том, что когда я настраиваю его для выполнения шага 1, он использует ваше имя пользователя Windows на шаге 2. Я не хочу, чтобы он делал это.


person Josh    schedule 02.11.2009    source источник


Ответы (2)


Уловка здесь заключается в том, чтобы сменить поставщика аутентификации для использования Active Directory, а не менять настройки на Windows.

Или используйте версию следующего провайдера:

<add
 name="AdProvider"
 type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
 connectionStringName="YourAd"
 applicationName="YourApp"
 enablePasswordReset="false"
  />

С версией следующей строки подключения:

<add name="YourAd"
connectionString="LDAP://[your DC]/OU=[your OU],DC=[your domain],DC=[your extension]"
/>

Что касается авторизации, у вас есть несколько вариантов. Если он основан на группах доменов, вам необходимо подключить azman. Если это управляется приложением, вам необходимо выровнять пользователей AD с ролями, хранящимися в базе данных.

PS: Я плохо разбираюсь в строках подключения LDAP, вы, вероятно, сможете сделать с ним гораздо больше, чем я.


Что ж, похоже, я ответил не на тот вопрос. Я оставлю это для потомков, но вам просто нужно попробовать отключить анонимную аутентификацию для сайта.

person Wyatt Barnett    schedule 02.11.2009
comment
Сайт использует формы авторизации, и это не может быть изменено с этого момента. В IIS6 вы могли защитить доступ сайта к Windows auth, а затем использовать формы auth в реальном коде. Мне нужно это сделать. - person Josh; 02.11.2009
comment
Отредактированный ответ на вопрос обряда. См. Выше. - person Wyatt Barnett; 02.11.2009

Я нашел здесь свой ответ:

IIS7 и проблемы аутентификации

Короче говоря, в IIS 7 у вас не может быть двухуровневой аутентификации, как в IIS 6.

person Josh    schedule 02.11.2009