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

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

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

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

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

Есть предложения или идеи здесь?

Ответы [ 2 ]

5 голосов
/ 02 августа 2010

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

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

1 голос
/ 30 сентября 2010

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

...