Je veux obtenir le nom d'utilisateur en utilisant l'authentification Windows
En fait, j’ai implémenté "Connexion en tant qu’utilisateur différent", lorsque vous cliquez sur ce bouton, la sécurité de Windows y apparaîtra, nous pourrons vous donner des informations d’identité.
À ce moment-là, si je donne d'autres informations d'identification, il utilise uniquement le nom d'utilisateur actuel… .. Comment obtenir ce nom d'utilisateur d'identification à partir de la sécurité Windows?
L'application hôte dans IIS, puis l'authentification anonyme a été désactivée et l'authentification Windows a été activée.
web.config:
<system.web>
<compilation debug="true" targetFramework="4.0" />
<identity impersonate="true"/>
<authorization>
<allow users="*"/>
<deny users="*"/>
</authorization>
</system.web>
<system.webServer>
<directoryBrowse enabled="true" />
<security>
<authentication>
<anonymousAuthentication enabled="false" />
<windowsAuthentication enabled="true" />
</authentication>
</security>
.cs
Ici, je reçois toujours le nom d'utilisateur par défaut
string fullName = Request.ServerVariables["LOGON_USER"];
Des idées? Merci d'avance
Vous pouvez obtenir l'utilisateur WindowsIdentity object sous Authentification Windows en:
WindowsIdentity identity = HttpContext.Current.Request.LogonUserIdentity;
et alors vous pouvez obtenir les informations sur l'utilisateur comme identity.Name.
Veuillez noter que vous devez avoir HttpContext pour ces codes.
Ce sont les différentes variables auxquelles vous avez accès et leurs valeurs, en fonction de la configuration IIS .
Scénario 1: Authentification anonyme dans IIS avec emprunt d'identité désactivé.
HttpContext.Current.Request.LogonUserIdentity.Name SERVER1\IUSR_SERVER1
HttpContext.Current.Request.IsAuthenticated False
HttpContext.Current.User.Identity.Name –
System.Environment.UserName ASPNET
Security.Principal.WindowsIdentity.GetCurrent().Name SERVER1\ASPNET
Scénario 2: Authentification Windows dans IIS, emprunt d'identité désactivé.
HttpContext.Current.Request.LogonUserIdentity.Name MYDOMAIN\USER1
HttpContext.Current.Request.IsAuthenticated True
HttpContext.Current.User.Identity.Name MYDOMAIN\USER1
System.Environment.UserName ASPNET
Security.Principal.WindowsIdentity.GetCurrent().Name SERVER1\ASPNET
Scénario 3: Authentification anonyme dans IIS, emprunt d'identité sur
HttpContext.Current.Request.LogonUserIdentity.Name SERVER1\IUSR_SERVER1
HttpContext.Current.Request.IsAuthenticated False
HttpContext.Current.User.Identity.Name –
System.Environment.UserName IUSR_SERVER1
Security.Principal.WindowsIdentity.GetCurrent().Name SERVER1\IUSR_SERVER1
Scénario 4: Authentification Windows dans IIS, emprunt d'identité sur
HttpContext.Current.Request.LogonUserIdentity.Name MYDOMAIN\USER1
HttpContext.Current.Request.IsAuthenticated True
HttpContext.Current.User.Identity.Name MYDOMAIN\USER1
System.Environment.UserName USER1
Security.Principal.WindowsIdentity.GetCurrent().Name MYDOMAIN\USER1
LégendeSERVER1\ASPNET
: Identité du processus en cours sur le serveur.SERVER1\IUSR_SERVER1
: Utilisateur invité anonyme défini dans IIS.MYDOMAIN\USER1
: l'utilisateur du client distant.
Cela devrait fonctionner:
User.Identity.Name
Identity
retourne une IPrincipal
Voici le lien vers Microsoft documentation .
Cela dépend de la configuration de l'application ainsi que de IIS, comme ce monsieur l'a justement expliqué dans le lien ci-dessous. S'il vous plaît voir son article ci-dessous
http://richhewlett.com/2011/02/15/getting-a-users-username-in-asp-net/
Nom d'utilisateur que vous obtenez comme ceci:
var userName = HttpContext.Current.Request.LogonUserIdentity?.Name;
Je pense qu'en raison du code ci-dessous, vous n'obtenez pas de nouveau justificatif d'identité
string fullName = Request.ServerVariables["LOGON_USER"];
Vous pouvez essayer page de connexion personnalisée .