{"id":285,"date":"2015-05-22T17:06:46","date_gmt":"2015-05-22T15:06:46","guid":{"rendered":"http:\/\/ubikuity.net\/blog\/?p=285"},"modified":"2020-12-27T01:08:58","modified_gmt":"2020-12-27T00:08:58","slug":"emprunter-identite-autre-utilisateur-asp-net","status":"publish","type":"post","link":"https:\/\/ubikuity.net\/blog\/2015\/05\/22\/emprunter-identite-autre-utilisateur-asp-net\/","title":{"rendered":"Emprunter l&#8217;identit\u00e9 d&#8217;un autre utilisateur en ASP.NET"},"content":{"rendered":"<p>Lors des phases de test\/recette, il est souvent utile de pouvoir se connecter en tant qu&#8217;un autre utilisateur sur une application, par exemple pour v\u00e9rifier que les permissions et les diff\u00e9rents r\u00f4les de l&#8217;application fonctionnent correctement.<\/p>\n<p>Dans mon cas, j&#8217;avais besoin de pouvoir emprunter l&#8217;identit\u00e9 d&#8217;un autre utilisateur sur une application Intranet ASP.NET MVC dont le m\u00e9canisme d&#8217;authentification est de type Windows NTLM (<code>&lt;authentication mode=\"Windows\" \/&gt;<\/code>)<\/p>\n<p>La solution que j&#8217;ai trouv\u00e9 est de cr\u00e9er un cookie qui contient le nom du compte utilisateur que je veux rev\u00eatir (&#8220;impersonation&#8221;).<br \/>\nPuis \u00e0 chaque chargement de page (Global.asax.cs), l&#8217;application examine la pr\u00e9sence de ce cookie afin de changer \u00e0 la vol\u00e9e l&#8217;utilisateur connect\u00e9 (HttpContext.Current.User).<\/p>\n<p>Evidemment, pour des raisons de s\u00e9curit\u00e9 et d&#8217;auditabilit\u00e9, il faut d\u00e9sactiver ce m\u00e9canisme sur l&#8217;application en Production.<\/p>\n<p>Voici le code qui permet de faire cela et que j&#8217;ai publi\u00e9 sur GitHub : <a href=\"https:\/\/github.com\/ubikuity\/impersonate-windows-user-aspnet\">https:\/\/github.com\/ubikuity\/impersonate-windows-user-aspnet<\/a><br \/>\nD\u00e9tails de l&#8217;impl\u00e9mentation : <a href=\"https:\/\/github.com\/ubikuity\/impersonate-windows-user-aspnet\/commit\/ed660effc08f2a89ed621b62bbda6b71e72a6e3e\">https:\/\/github.com\/ubikuity\/impersonate-windows-user-aspnet\/commit\/ed660effc08f2a89ed621b62bbda6b71e72a6e3e<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Lors des phases de test\/recette, il est souvent utile de pouvoir se connecter en tant qu&#8217;un autre utilisateur sur une application, par exemple pour v\u00e9rifier que les permissions et les diff\u00e9rents r\u00f4les de l&#8217;application fonctionnent correctement. Dans mon cas, j&#8217;avais besoin de pouvoir emprunter l&#8217;identit\u00e9 d&#8217;un autre utilisateur sur une application Intranet ASP.NET MVC dont [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[17],"tags":[45,22],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p6emaU-4B","_links":{"self":[{"href":"https:\/\/ubikuity.net\/blog\/wp-json\/wp\/v2\/posts\/285"}],"collection":[{"href":"https:\/\/ubikuity.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ubikuity.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ubikuity.net\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/ubikuity.net\/blog\/wp-json\/wp\/v2\/comments?post=285"}],"version-history":[{"count":7,"href":"https:\/\/ubikuity.net\/blog\/wp-json\/wp\/v2\/posts\/285\/revisions"}],"predecessor-version":[{"id":553,"href":"https:\/\/ubikuity.net\/blog\/wp-json\/wp\/v2\/posts\/285\/revisions\/553"}],"wp:attachment":[{"href":"https:\/\/ubikuity.net\/blog\/wp-json\/wp\/v2\/media?parent=285"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ubikuity.net\/blog\/wp-json\/wp\/v2\/categories?post=285"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ubikuity.net\/blog\/wp-json\/wp\/v2\/tags?post=285"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}