Как заставить не использовать олицетворение в IIS 7+? - PullRequest
1 голос
/ 12 января 2011

Я пытаюсь заставить мое веб-приложение работать полностью как пользователь AppPool (Domain \ UserForApp), и я правильно установил настройку в IIS, и все работает нормально и System.Security.Principal.WindowsIdentity.GetCurrent (). Name"возвращает правильный" Домен \ UserForApp ".

Однако, когда я пытался ограничить разрешения моего каталога веб-приложений необходимыми пустыми руками:

  • СИСТЕМА (полный доступ)
  • Me (полный доступ)
  • Admininstrators (полный доступ)
  • UserForApp (чтение)

Я больше не могу загружать статические файлы.Поэтому я скачал Process Monitor, чтобы выяснить, почему и всякий раз, когда он пытается получить доступ к статическому файлу, я получаю следующую ошибку:

ACCESS DENIED:
Desired Access:     Generic Read
Disposition:        Open
Options:            Sequential Access, No Buffering
Attributes:         RE
ShareMode:          Read, Write, Delete
AllocationSize:     n/a
Impersonating:      NT AUTHORITY\IUSR

И, как вы видите из приведенного выше, IUSR не имеет разрешений, так чтоправильно, но я просто не понимаю, почему это все равно пытается выдать себя за другого.В моем файле web.config у меня есть:

<location path="" overrideMode="Deny">
    <system.web>
        <identity impersonate="false" />
    </system.web>
</location>

только для того, чтобы никто не включал олицетворение, но это не имело никакого эффекта.

Это не работает как в классическом, так и в конвейерном режиме.режим, но ошибка немного отличается.В классическом случае при просмотре изображений отображается просто страница HTTP Error 401.3 - Unauthorized, а при использовании Pipelined перенаправляется на сайт входа.

1 Ответ

2 голосов
/ 12 января 2011

Если вы не хотите, чтобы сайт работал в качестве удостоверения пула приложений, вам нужно:

<location path="my_site">
     <system.webServer>
         <security>
             <authentication>
                 <anonymousAuthentication userName="" />
             </authentication>
         </security>
    </system.webServer>
</location>

Вы можете установить это в своем файле applicationHost.config (вероятно, лучшее место), выполнив:

APPCMD.exe set config "my_site" -section:system.webServer/security/authentication/anonymousAuthentication /username:"" /commit:apphost
...