Олицетворение в веб-приложении ASP.NET не работает при запуске на IIS
Я работаю над веб-приложением ASP.NET 4.0 MVC3, которое работает в среде интрасети. Приложение использует проверку подлинности Windows. Его пул приложений запускается пользователем домена, для которого на контроллере домена установлено значение spn. Аутентификация работает с использованием Kerberos (в IE и Firefox после некоторой дополнительной настройки).
Теперь я хочу загрузить файлы на sharepoint, но для меня важно загрузить файл, когда пользователь в данный момент вошел в приложение (поэтому файл создается на Sharepoint с его / ее учетными данными).
У меня есть следующий код вResourceExists(Uri uri)
функция:
'...
Dim identity As System.Security.Principal.WindowsIdentity = HttpContext.User.Identity
Dim impersonationContext = identity.Impersonate()
response = request.GetResponse()
impersonationContext.Undo()
'...
Это работает при локальном запуске, но при развертывании на сервере я получаю исключение:
System.Net.WebException: The remote server returned an error: (401) Unauthorized.\r\n at WebDav.WebDavClient.ResourceExists(Uri uri)\r\n at Website.Website.WebdavController.Upload(HttpPostedFileBase file, UploadViewModel vm)
Я прочитал кое-что о передаче учетных данных, что невозможно с NTLM, но я уверен, что использую Kerberos (я проверил заголовки с помощью wireshark и fiddler), и я вижу следующее:
Authorization: Negotiate YIIFpQYGKwYBBQUCoIIFmTCCBZWgJDAiBgkqhkiC9x...
Есть идеи, почему олицетворение не работает при запуске на сервере IIS?