Олицетворение в ASP.NET web приложение не работает при работе в 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?

5
задан Michal B. 18 June 2012 в 09:11
поделиться