2010-08-01 10 views
3

Мы в процессе обновления с IIS 6 и .NET 3.5 до IIS 7.5 (Windows Server 2008 R2 Enterprise) с тем же приложением. У меня возникли проблемы с правильной работой нашей предыдущей установки IIS 6.IIS 7.5/ASP.NET - анонимный доступ ко всему, кроме одного каталога - как?

В соответствии с IIS 6 я мог бы установить сам сайт для использования конкретного пользователя домена (например, ourdomain \ webuser) для самого IIS. Этот контролируемый первоначальный доступ ко всем файлам, включая HTML, изображения и т. Д., И сформировал первоначальный запрос, который попал на страницу ASP.NET, в которой затем перешел .NET-движок, а пользователь, работающий с .NET, был другим пользователем домена (например, ourdomain \ dotnetuser). Затем мы удалили все разрешения NTFS из одной папки (например,/lockdown /) для пользователя IIS, нашего домена \ webuser. В любое время, когда кто-то пытался получить доступ к файлу в этом каталоге, IIS сказал: «Нет доступа, удалите доступ к проверке подлинности Windows» и запросите их для учетных данных. Это все равно привело к тому, что любой базовый .NET-код запускался как ourdomain \ dotnetuser.

У меня возникли проблемы с тем, чтобы эта же настройка работала под IIS 7.5, и я уверен, что это просто какая-то глупость. Он ... хочет работать, но не полностью. Вот что я сделал:

Пул приложений для сайта установлен в .NET Framework v2.0.50727 с «Интегрированным», выбранным в качестве режима управляемого режима трубопровода. Затем идентификатор устанавливается в ourdomain \ dotnetuser, так что пул работает как конкретный пользователь.

Веб-сайт настроен на IIS> Аутентификация для подключения как «ourdomain \ webuser», и все, кажется, хорошо. Проблема в том, когда я перехожу в этот специальный каталог/lockdown /. Я попытался настроить его точно так же, как IIS 6 (просто удалив доступ к этой папке из нашего домена \ webuser). Когда я делаю это, я получаю стандартный запрос на доступ, но после предоставления моих документов, я все еще получаю:

 
Error message 401.3: You do not have permission to view this directory 
or page using the credentials you supplied (access denied due to Access 
Control Lists). Ask the Web server's administrator to give you access to 
'C:\ourwebsite\lockdown\default.aspx'. 

Моих учетную запись в группе локальных администраторов на этой машине (плюс я администратор домена здесь), а группе «Администраторы» был предоставлен полный доступ к этой папке. Я вижу следующее событие «Информация» в средстве просмотра событий приложений:

 
Event code: 4008 
Event message: File authorization failed for the request. 
Event time: 8/1/2010 8:45:18 AM 
Event time (UTC): 8/1/2010 12:45:18 PM 
Event ID: 0f8a5de692e74e67bb4e3c65a867586c 
Event sequence: 32 
Event occurrence: 1 
Event detail code: 0 

Application information: 
    Application domain: /LM/W3SVC/1/ROOT-1-129251371048714102 
    Trust level: Full 
    Application Virtual Path:/
    Application Path: C:\ourwebsite\ 
    Machine name: TESTWEB3 

Process information: 
    Process ID: 3008 
    Process name: w3wp.exe 
    Account name: ourdomain\dotnetuser 

Request information: 
    Request URL: http://localhost/lockdown/default.aspx 
    Request path: /lockdown/default.aspx 
    User host address: ::1 
    User: ourdomain\myuser 
    Is authenticated: True 
    Authentication Type: Negotiate 
    Thread account name: ourdomain\dotnetuser 

Любые предложения или идеи здесь?

ответ

5

Вы можете использовать правила авторизации для этого, просто создать web.config внутри директории, которую вы хотите защитить со следующим содержанием:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
     <security> 
      <authorization> 
       <remove users="*" roles="" verbs="" /> 
       <add accessType="Deny" users="?" /> 
       <add accessType="Allow" roles="Administrators" /> 
      </authorization> 
     </security> 
    </system.webServer> 
</configuration> 

Это предотвратит доступ к анонимным пользователям и только позволять пользователям группа «Администраторы». вы можете использовать для этого роли или пользователей.

+0

Большое спасибо за предложение. Я помещал это точное содержимое в недавно созданный файл web.config в папку, и он, похоже, не выполняет ничего (что мне кажется странным). Если я верну разрешения NTFS одинаково в этой папке, как и во всех других папках на сайте, я ожидал бы, что этот web.config будет вызван и предотвратит доступ не-админов (т. Е. Анонимный ourdomain \ webuser). Есть ли другой параметр конфигурации, который может потребоваться, чтобы это могло сработать? –

+0

Это работает намного лучше, когда вы сначала устанавливаете авторизацию на уровне сервера! http://www.iis.net/ConfigReference/system.webServer/security/authorization Спасибо! –

1

В Windows Server 2008 R2 с IIS 7.5 вам необходимо выполнить проводник Windows как администратор, щелкнув его правой кнопкой мыши, чтобы получить права администратора на изменение чего-либо в этой папке. Добавьте идентификатор пула приложений в ACL папки c: \ inetpub \ wwwroot ... с разрешениями на чтение и выполнение.