2017-07-14 4 views
0

J'ai une application Web asp.net, sur laquelle j'essaie d'implémenter l'authentification Windows.WindowsIdentity renvoie toujours l'utilisateur IIS

L'application est hébergée sur IIS et s'exécute sous le compte Administrateur.

Dans l'application, j'essaie d'obtenir le nom de l'utilisateur Windows connecté, ex Catalin Gavan. Quoi que j'essaie, j'obtiens toujours l'utilisateur administrateur, celui qui exécute le ApplicationPool.

Voici ce que j'ai essayé:

Request.LogonUserIdentity); // "NT AUTHORITY\\IUSR" 
WindowsIdentity.GetCurrent(); // "ADIDEVNET\\administrator" 
WindowsIdentity.GetAnonymous();  
WindowsIdentity.GetCurrent(true); // null 
WindowsIdentity.GetCurrent(false); // "ADIDEVNET\\administrator" 

Comment puis-je obtenir les fenêtres connectés actuel utilisateur, à partir du code derrière?

AppPool settings enter image description here

Répondre

0

Allumez l'authentification Windows et qui devrait le corriger. Deuxièmement, lorsque vous définissez l'identité à l'administrateur dans les paramètres avancés, il se connectera toujours en tant qu'administrateur. Supprimer l'identité de là, aussi bien. Un utilisateur va "usurper l'identité" du compte administrateur quand il est défini.

Essayez ces paramètres web.config.

<system.web> 
... 
<authentication mode="Windows" /> 
<authorization> 
    <deny users="?" /> <!-- may want to remove this if you want to allow anonymous --> 
</authorization> 
<identity impersonate="false" /> 
</system.web> 
0

Dans ASP.NET Web Forms, vous devez accéder Page.User, et dans ASP.NET MVC ou API Web, vous devez appeler Controller.User ou ApiController.User en conséquence. Cette identité d'utilisateur provient de la requête et est définie comme identité de thread.

WindowsIdentity.GetCurrent renvoie l'identité du processus, qui est évidemment l'identité du pool d'applications que vous avez définie.