IIS 7.5 / ASP.NET - анонимный доступ ко всему, кроме одного каталога - как?

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

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

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

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

Веб-сайт настроен на IIS> Аутентификация для подключения как «наш домен \ веб-пользователь», и все, похоже, в порядке. Проблема в том, что я захожу в этот специальный каталог / 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

Есть здесь какие-нибудь предложения или идеи?


person mk.    schedule 01.08.2010    source источник


Ответы (2)


Для этого вы можете использовать правила авторизации, просто создайте 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>

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

person Carlos Aguilar Mares    schedule 02.08.2010
comment
Большое спасибо за предложение. Я поместил это точное содержимое во вновь созданный файл web.config в папке, и, похоже, он ничего не выполняет (что мне кажется странным). Если я восстановлю разрешения NTFS для этой папки, чтобы они были такими же, как и для всех других папок на сайте, я бы ожидал, что этот web.config будет вызван и предотвратит доступ для пользователей, не являющихся администраторами (т. Е. Анонимного домена ourdomain \ webuser). Есть ли какие-то другие параметры конфигурации, которые мне могут понадобиться, чтобы это сработало? - person mk.; 02.08.2010
comment
Это работает намного лучше, если вы сначала устанавливаете авторизацию URL-адресов на уровне сервера! iis.net/ConfigReference/system.webServer/security/authorization Спасибо ты! - person mk.; 03.08.2010

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

person Earl    schedule 30.09.2010