500 Ошибка при использовании настраиваемой учетной записи для пула приложений в IIS 7

У меня очень простой сайт с только статическими файлами в IIS 7 на Windows Server 2008 с пакетом обновления 2 (SP2).

Когда я пытаюсь получить доступ к любому статическому файлу, я получаю ошибку 500. Если я переименую HTML-файл, чтобы иметь расширение aspx, он работает нормально.

Сайт также работает нормально при использовании встроенного удостоверения для пула приложений. Проблема возникает, когда я переключаюсь на использование настраиваемой учетной записи для пула приложений. Я пытался использовать как локальные, так и доменные учетные записи для запуска пула приложений под.

Я дал полный контроль над этими учетными записями на веб-сайте каталога и файлов.

Включение трассировки показывает это сообщение об ошибке:
ModuleName: IIS Web Core
Уведомление: 2
HttpStatus: 500
HttpReason: внутренняя ошибка сервера
HttpSubStatus: 0
Код ошибки: 2147943746
ConfigExceptionInfo
Уведомление: AUTHENTICATE_REQUEST
ErrorCode: Либо требуемый уровень олицетворения не был предоставлен, либо предоставленный уровень олицетворения недействителен. (0x80070542)

Мне не повезло с поиском кода ошибки.

5 ответов

Решение

Решение проблемы: группа IIS_IUSRS отсутствовала в разделе "выдавать себя за клиента после аутентификации" в локальной политике безопасности.

Windows Сервер 2016, IIS 10.

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

Я не могу добавить «выдавать себя за клиента после аутентификации». Описание изображения

Я также пробую метод Петара Вейганда, но у меня он не сработал.

После множества попыток я обнаружил, что добавление пользовательской учетной записи в «Подключиться как» может решить проблему. Описание изображения

В моей среде из-за настроек групповой политики мне не разрешили ни изменить настройку «олицетворять клиента после аутентификации», ни добавить локальных администраторов пользователей пула приложений, поэтому я начал искать, почему вообще происходит олицетворение. По умолчанию анонимная проверка подлинности была настроена на использование пользователя IUSR, поэтому пользователь пула приложений пытался выдать себя за него.

Я изменил анонимный идентификатор пользователя на «Идентификатор пула приложений», поэтому нет необходимости выдавать себя за другое лицо.

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

чтобы дать разрешения для определенного пула просто дайте разрешения для пользователя "IIS APPPOOL\YOUR_POOL_NAME"

В дополнение к ответу Брауни (это правильно, вы должны предоставить это право учетной записи пула приложений); если IIS отправляет вам эту ошибку, когда вы вызываете ее с помощью клиента WCF (+ IIS-аутентификация включена в IIS), это может быть связано с тем, что флаги маркера NTLM, данного IIS, не позволяют ему выдавать себя за вызывающего.

Измените конфигурацию вашего клиента из этого (по умолчанию):

<behavior name="NewBehavior">
  <clientCredentials>
    <windows allowedImpersonationLevel="Identification" />
  </clientCredentials>
</behavior>

К этому:

<behavior name="NewBehavior">
  <clientCredentials>
    <windows allowedImpersonationLevel="Impersonation" />
  </clientCredentials>
</behavior>

Проверьте эту статью для деталей: Олицетворение и Делегирование в WCF

Другие вопросы по тегам