ASP.NET : L’impersonation

Mécanique de l’impersonation en ASP : pratique, mais pas simple…

L’impersonation signifie le fait de choisir sous quel compte seront exécutés les processus ASP.

Dans le web.config, la ligne suivante :

<identity impersonate="true" />

Signifie que le compte qui s’est connecté à IIS sera utilisé pour exécuter la logique côté serveur.

ATTENTION : Si le site est en accès anonyme, alors c’est le compte du pool d’application qui est utilisé (il en faut bien 1 !).

On peut forcer le compte utilisé pour l’impersonation :

<identity impersonate="true" userName="DOMAINusername" password="aaa"/>

Ceci n’empêche pas le compte Windows de se connecter au site, mais ce sera DOMAINusername qui exécutera la logique.

Du côté des sources :

HttpContext.Current.User : Renvoie le compte connecté à IIS (Windows intégré, anonyme, etc.) Quelque soit l’impersonation choisie.

WindowsIdentity.GetCurrent() : Renvoie le compte qui exécute la logique. Donc si l’impersonation est à « true » dans le web.config, on aura le même compte que Current.User…

Enfin, en cours d’excution, on peut décider que le compte connecté sera celui qui sert à l’impersonation :

WindowsIdentity ident = (WindowsIdentity)HttpContext.Current.User.Identity; // On caste avant...

ident.Impersonate();

Si jamais le Current.User était un accès anonyme, une exception surgit : « Une identité anonyme ne peut pas exécuter un emprunt d’identité. »

CQFD.

Laisser un commentaire

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