Приложение IIS, использующее идентификатор пула приложений, теряет основной маркер?
(это вопрос о неопределенной проблеме. Я стараюсь представить все соответствующие данные, в надежде, что у кого-то есть полезная информация; извиняюсь за длинное описание.)
наше веб-приложение
у нас есть веб-приложение .NET 4, работающее в IIS 7.5, доступ к Active Directory и базе данных SQL Server.
это веб-приложение работает под виртуальным идентификатором пула приложений, установив идентификатор пула приложений приложения ApplicationPoolIdentity. Краткое описание виртуальных удостоверений можно найти в ответ StackOverflow, и сообщение в блоге, к которому оно относится: идентификатор пула приложений-это просто дополнительная группа, которая добавляется к рабочим процессам веб-приложения, которые выполняются как "сетевая служба". Однако,источник неопределенно предполагает, что " сетевая служба и ApplicationPoolIdentity имеют различия, которые IIS.net документы сайта не делают издавать."Таким образом, виртуальная личность может быть больше, чем просто дополнительная группа.
мы решили использовать ApplicationPoolIdentity, в отличие от NetworkService, потому что он стал по умолчанию в IIS 7.5 (см., например,здесь), и в соответствии с рекомендацией Microsoft: "это удостоверение позволяет администраторам указывать разрешения, относящиеся только к удостоверению, под которым работает пул приложений, тем самым повышая безопасность сервера.(от элемент processModel для добавить на странице [сервер IIS 7 схема параметров]) "удостоверения пула приложений-это мощная новая функция изоляции", которая " делает запуск приложений IIS еще более безопасным и надежным. (от IIS.net статья "удостоверения пула приложений")
приложение использует встроенную проверку подлинности Windows, но с <identity impersonate="false"/>
, так что для запуска нашего кода используется не идентификатор конечного пользователя, а идентификатор пула виртуальных приложений.
этот приложение запрашивает Active Directory с помощью
3 ответа:
в службу поддержки Microsoft я узнал, что мы столкнулись с проблемой, описанной в статья базы знаний Майкрософт KB2545850. Это происходит только при использовании ApplicationPoolIdentity. Это происходит очень легко, а именно, после того, как пароль учетной записи машины изменяется (что по умолчанию происходит автоматически каждые 30 дней), а затем IIS перезапускается (например, через
iisreset
). Обратите внимание, что проблема уходит после перезагрузки, согласно Microsoft и нашим наблюдения.согласно Microsoft, невозможно проверить, попал ли ваш Windows/IIS в это состояние.
Microsoft имеет исправление, прикрепленное к этой статье базы знаний. Нет никаких указаний на то, когда это исправление будет свернуто в официальную доставку, и исправление уже 10 месяцев. В нашем конкретном случае мы решили вместо этого переключиться на NetworkService.
см.https://serverfault.com/a/403534/126432 для моих комментариев по той же проблеме/решению.
использование исправления, которое вы связали, позволило мне получить ApplicationPoolIdentity, работающий так, как говорят документы. Это исправление специально не описывает решение для доступа к сетевым ресурсам как NT AUTHORITY\ANONYMOUS LOGON, но это связано с изменением пароля компьютера. Суть в том, что это сработало для меня, по крайней мере до сих пор.
Это также относится к Umbraco с использованием проверки подлинности Active Directory. Время от времени вы можете получить это исключение:
Настройки Ошибка
указанный атрибут или значение службы каталогов не существует
Это, по-видимому, вызвано проблемой, описанной здесь. Перезагрузка неизменно исправляет это.