Representação no aplicativo da Web ASP.NET não funciona quando executado no IIS
Eu estou trabalhando no aplicativo da web do asp.net 4.0 MVC3 que funciona no ambiente de intranet. O aplicativo faz uso da autenticação do Windows. Seu pool de aplicativos é executado pelo usuário de domínio que possui spn em um controlador de domínio. A autenticação funciona usando o Kerberos (no IE e no Firefox após algumas configurações adicionais).
Agora eu quero fazer upload de arquivos para o sharepoint, mas é importante para mim fazer o upload do arquivo como o usuário atualmente logado no aplicativo (para que o arquivo seja criado no Sharepoint com suas credenciais).
Eu tenho o seguinte código emResourceExists(Uri uri)
função:
'...
Dim identity As System.Security.Principal.WindowsIdentity = HttpContext.User.Identity
Dim impersonationContext = identity.Impersonate()
response = request.GetResponse()
impersonationContext.Undo()
'...
Isso funciona quando executado localmente, mas quando eu implantar no servidor eu recebo a exceção:
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)
Eu li algo sobre passar as credenciais, que não é possível com o NTLM, mas tenho certeza de que estou usando o Kerberos (verifiquei os cabeçalhos com wireshark e fiddler) e vejo o seguinte:
Authorization: Negotiate YIIFpQYGKwYBBQUCoIIFmTCCBZWgJDAiBgkqhkiC9x...
Alguma idéia de por que a representação não funciona quando executada no servidor IIS?