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