L'emprunt d'identité dans ASP.NET l'application web ne fonctionne pas lors de l'exécution sur IIS

Je suis en train de travailler sur ASP.NET 4.0 MVC3 application web qui fonctionne en environnement intranet. L'application permet l'utilisation de l'authentification Windows. Son pool d'applications est exécuté par un utilisateur de domaine qui a spn ensemble sur un contrôleur de domaine. L'authentification fonctionne à l'aide de Kerberos (sur IE et Firefox après une configuration supplémentaire).

Maintenant, je veux télécharger des fichiers de sharepoint, mais il est important pour moi de télécharger le fichier que l'utilisateur actuellement connecté à l'application (le fichier est créé sur Sharepoint avec son/ses informations d'identification).

J'ai le code suivant dans ResourceExists(Uri uri) fonction:

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

Cela fonctionne lors de l'exécution en local, mais quand je le déployer sur le serveur-je obtenir de l'exception:

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)

J'ai lu quelque chose au sujet de transmettre les informations d'identification, qui n'est pas possible avec NTLM, mais je suis sûr que je suis à l'aide de Kerberos (j'ai vérifié les en-têtes avec wireshark et violoniste) et je vois le suivant:

Authorization: Negotiate YIIFpQYGKwYBBQUCoIIFmTCCBZWgJDAiBgkqhkiC9x...

Des idées pourquoi l'usurpation d'identité ne fonctionne pas lors de l'exécution sur le serveur IIS?

OriginalL'auteur Michal B. | 2012-06-18

Leave a Reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *