Я пытаюсь использовать Олицетворение и Делегацию в веб-приложении ASP.NET интранет для передачи учетных данных аутентифицируемых пользователей на SQL Server.
Веб-сервер и SQL-сервер являются двумя отдельными машинами, но в том же домене, таким образом, Делегация требуется.
Я сделал следующее:
<authentication mode="Windows"/>
и <identity impersonate="true"/>
в web.config моего веб-приложения.По-видимому, это должно все работать, но это не делает (SQL Server запрещает доступа анонимному пользователю - "Вход в систему, отказавший для пользователя 'ВХОД В СИСТЕМУ NT AUTHORITY\ANONYMOUS'").
В IIS7 Пул приложений установлен использовать Интегрированный Режим Pipleline и работает с Идентификационными данными NetworkService. Веб-сайту только включили аутентификацию Windows, Расширенная Защита Выключена аутентификация Привилегированного режима включена, и NTLM является поставщиком.
Все веб-страницы, которые я считал, кажется, указывают, что моя установка должна работать. Что я пропускаю?
Я обнаружил ответ:
Поставщик аутентификации Windows в IIS7 должен быть установлен на Purging: Kerberos , а не NTLM. Это означает, что настройка аутентификации режима ядра должна быть отключена. Похоже, это все в порядке. Я думаю, что я правю, что аутентификация режима ядра требуется при использовании пользовательской идентичности, то есть одна конкретная идентичность. Делегация может использовать произвольное количество идентичностей. Так что все хорошо.
Я написал сообщение в блоге , который также более подробно рассмотрится.