1

J'ai un problème étrange avec l'authentification Windows. Nous avons une application web asp.net dans laquelle nous avons un seul dossier qui utilise l'authentification Windows. Ce dossier est correctement configuré pour l'authentification Windows dans IIS. L'application utilise .net usurpation d'identité via le web.config. Lorsque nous naviguons à une page dans ce dossier en utilisant l'authentification Windows le:L'identité de fenêtre actuelle est identique à celle de l'identité de l'utilisateur de currcircle avec l'authentification Windows

  • system.web.httpcontext.current.user.Identity.Name renvoie le nom de l'utilisateur qui fait la demande (ce qui est prévu)
  • System.security.principal.windowsIdentifier.getCurrent.Name renvoie le nom de l'utilisateur sous lequel l'application est exécutée (ce devrait également)

maintenant, nous travaillons sur une nouvelle version de notre produit pour un Longtemps. Et nous découvrons maintenant que le comportement a changé. Lorsque nous effectuons à nouveau le même test, le nom d'utilisateur httpcontext et principal.windowsidentity.getcurrent renvoient le nom de l'utilisateur qui exécute la demande.

Nous avons vérifié tout le code pertinent et nous ne pouvons pas trouver de différence ayant quelque chose à voir avec ce comportement. Nous avons converti l'application de .Net 4.0 à .Net 4.5.2 dans la nouvelle version, cependant, quand nous convertissons l'ancienne version en .Net 4.5.2, le comportement reste correct (les 2 propriétés montrent une identité différente) de sorte que doesn ne semble pas être la différence.

Des idées sur où chercher la cause de ce comportement?

Éditer: Le débogage me dit que l'identité a déjà la mauvaise valeur lors de l'exécution du pré-gestionnaire de prérequis global.asax. Dans la demande de début l'usurpation d'identité du site Web n'a pas été effectuée, et l'identité actuelle est l'identité du pool d'applications

Edit2: Il semble être spécifique au serveur. Pour une raison quelconque, l'ancienne version fonctionne correctement sur les machines de développement, mais la nouvelle version ne fonctionne pas. Cependant, la nouvelle version fonctionne correctement sur les serveurs de déploiement (nos builds quotidiens). Quelqu'un at-il des indications sur une cause possible?

Répondre

1

Bon, j'ai trouvé le problème. Le problème était que IIS a ajouté un web.config au dossier en utilisant l'authentification Windows, dans lequel il a activé l'emprunt d'identité sur le dossier. Lorsque l'authentification et l'emprunt d'identité Windows sont activés dans le même dossier, le comportement selon lequel l'identité de la fenêtre et l'identité de la demande sont le même utilisateur est correct.

La situation dont nous avons besoin peut être obtenue en activant l'authentification Windows, mais en déshabilitant l'emprunt d'identité sur le dossier. Dans ce cas, l'identité de Windows est l'utilisateur du site Web par défaut, et l'identité de la demande est l'identité de l'utilisateur qui accède à la page.