La suplantación en la aplicación web ASP.NET no funciona cuando se ejecuta en IIS

Estoy trabajando en la aplicación web ASP.NET 4.0 MVC3 que funciona en un entorno de intranet. La aplicación hace uso de la autenticación de Windows. Su grupo de aplicaciones lo ejecuta un usuario de dominio que tiene spn configurado en un controlador de dominio. La autenticación funciona con Kerberos (en IE y Firefox después de alguna configuración adicional).

Ahora quiero cargar archivos en sharepoint, pero es importante para mí cargar el archivo ya que el usuario que inició sesión actualmente en la aplicación (para que el archivo se cree en Sharepoint con sus credenciales).

Tengo el siguiente código enResourceExists(Uri uri) función:

'...
    Dim identity As System.Security.Principal.WindowsIdentity = HttpContext.User.Identity
    Dim impersonationContext = identity.Impersonate()
    response = request.GetResponse()
    impersonationContext.Undo()
'...

Esto funciona cuando se ejecuta localmente, pero cuando lo implemento en el servidor obtengo la excepción:

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)

Leí algo sobre la transmisión de credenciales, eso no es posible con NTLM, pero estoy seguro de que estoy usando Kerberos (verifiqué los encabezados con wireshark y fiddler) y veo lo siguiente:

Authorization: Negotiate YIIFpQYGKwYBBQUCoIIFmTCCBZWgJDAiBgkqhkiC9x...

¿Alguna idea de por qué la suplantación no funciona cuando se ejecuta en el servidor IIS?

Respuestas a la pregunta(3)

Su respuesta a la pregunta