Параметры авторизации ASP.NET web.config игнорируются - PullRequest
1 голос
/ 28 марта 2009

У меня есть сайт asp.net (динамические данные), настроенный как приложение в подкаталоге другого сайта. Этот сайт требует различных настроек безопасности от сайта верхнего уровня. Что-то вроде:

    <authorization>
       <allow roles="ADMIN"/>
       <deny users="*"/>
    </authorization>

Эти настройки игнорируются на дополнительном сайте. Тем не менее, они работают на сайте верхнего уровня, но даже если они установлены на сайте верхнего уровня, они не наследуются дочерним сайтом, и он находится в свободном доступе. Что может привести к игнорированию этих настроек? Я попытался добавить:

<location path="." inheritInChildApplications="false">  

на верхний уровень web.config и затем установив вышеупомянутое правило авторизации на под-сайте, даже пытался просто запретить всем пользователям. При посещении сайта это выглядит так: http://mysite/mybrokensite

Я использую проверку подлинности Windows.

Ответы [ 3 ]

2 голосов
/ 28 марта 2009

Я думаю, что ключевым моментом является

веб-сайт, настроенный как приложение в подкаталог другого сайта

Если это отдельное приложение в IIS, у него должен быть свой собственный файл web.config, и настройки безопасности могут быть установлены оттуда. Таким образом, у вас будет один web.config для основного сайта и один для дочернего сайта. на самом деле это два приложения.

Если это просто подпапка на вашем сайте, то это не относится. Это зависит от того, как вы настроили его под IIS. Если это отдельное приложение, то значок будет изображением типа мир / капуста. Если это подпапка, то значок будет ... ну, папка.

0 голосов
/ 23 марта 2011

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

Авторизация подпапки

  • ASP.NET может иметь только один режим аутентификации для одного приложение.
  • разные приложения не могут делиться ресурсом среди них.

Сценарий

Допустим, домашняя страница не должна вызывать диалог входа в систему. Это должно позволить пользователям проходить без входа в систему. Однако в том же приложении, предположительно, в другой папке, другой странице необходимо проверить разрешение пользователя по таблице базы данных, используя идентификатор входа в сеть пользователя. По умолчанию IE обрабатывает весь веб-сайт только с именем хоста в интрасети. По умолчанию в интрасети он не выводит диалоговое окно входа в систему и не передает имя пользователя и пароль в приложение, если используется проверка подлинности Windows. Однако сложная сторона заключается в том, что если приложение имеет фактический домен, IE будет считать, что это Интернет-сайт, и запрашивает логин и пароль, если используется аутентификация Windows.


Единственный способ не открывать диалоговое окно входа для интернет-сайта, использующего проверку подлинности Windows, - это также включить анонимную проверку подлинности в IIS. Однако вы потеряете возможность сбора информации для входа, поскольку Аноним имеет приоритет над проверкой подлинности Windows. Хорошей новостью является то, что есть способ решить эту проблему. Если в подпапку приложения требуется записать информацию для входа, вам нужно перезаписать родительскую авторизацию в элементе Location в web.config.

1 В IIS настройте Аутентификацию следующим образом:

  1. Включить анонимную аутентификацию,
  2. Включить проверку подлинности Windows

2 Добавьте следующее в Web.Config.

<authentication mode="Windows" />
  <authorization>
   <allow users="*" />
</authorization>

<!-- secured is the relative subfolder name. deny anonymous user, so only the authenticated login will pass through -->
<location path="secured" allowOverride="true">
  <system.web>
    <authorization>        
        <deny users="?" />
    </authorization>
  </system.web>
</location>
0 голосов
/ 28 марта 2009

Для уточнения ответа Тима убедитесь, что в IIS он настроен как виртуальный каталог. Посмотрите на страницу свойств для этого каталога на вкладке IIS Admin, Directory (или Home Directory). Если метка приложения неактивна, нажмите кнопку «Создать». Теперь IIS загрузит файл web.config из этого каталога.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...