Ich möchte den Benutzernamen mithilfe der Windows-Authentifizierung abrufen
Eigentlich habe ich "Als anderer Benutzer anmelden" implementiert. Wenn Sie auf diese Schaltfläche klicken, wird die Windows-Sicherheit dort angezeigt, wo wir Anmeldeinformationen angeben können.
Wenn ich in dieser Zeit einen anderen Berechtigungsnachweis gebe, wird nur der aktuelle Benutzername verwendet. Wie kann der angegebene Berechtigungsnachweis aus der Windows-Sicherheit abgerufen werden?
Host-Anwendung in IIS, anonyme Authentifizierung wurde deaktiviert und Windows-Authentifizierung wurde aktiviert.
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
Hier bekomme ich immer den voreingestellten Benutzernamen
string fullName = Request.ServerVariables["LOGON_USER"];
Irgendwelche Ideen? Danke im Voraus
Sie können das Objekt WindowsIdentity des Benutzers unter Windows-Authentifizierung abrufen, indem Sie:
WindowsIdentity identity = HttpContext.Current.Request.LogonUserIdentity;
und dann können Sie die Informationen über den Benutzer wie Identität.Name erhalten.
Bitte beachten Sie, dass Sie für diesen Code HttpContext benötigen.
Dies sind die verschiedenen Variablen, auf die Sie zugreifen können, und deren Werte, abhängig von der IIS -Konfiguration .
Szenario 1: Anonyme Authentifizierung in IIS mit deaktiviertem Identitätswechsel.
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
Szenario 2: Windows-Authentifizierung in IIS, Identitätswechsel deaktiviert.
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
Szenario 3: Anonyme Authentifizierung in IIS, Identitätswechsel bei
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
Szenario 4: Windows-Authentifizierung in IIS, Identitätswechsel auf
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
LegendeSERVER1\ASPNET
: Identität des laufenden Prozesses auf dem Server.SERVER1\IUSR_SERVER1
: Anonymer Gastbenutzer, der in IIS definiert ist.MYDOMAIN\USER1
: Der Benutzer des Remote-Clients.
Das sollte funktionieren:
User.Identity.Name
Identity
gibt eine IPrincipal
zurück
Hier ist der Link zur Microsoft Dokumentation .
Es hängt von der Konfiguration der Anwendung sowie von IIS ab, wie dieser Herr im untenstehenden Link zu Recht erklärt hat. Bitte lesen Sie seinen Artikel unten
http://richhewlett.com/2011/02/15/getting-a-users-username-in-asp-net/
Benutzername erhalten Sie so:
var userName = HttpContext.Current.Request.LogonUserIdentity?.Name;
Ich denke, aufgrund des folgenden Codes erhalten Sie keine neuen Zugangsdaten
string fullName = Request.ServerVariables["LOGON_USER"];
Sie können die benutzerdefinierte Anmeldeseite ausprobieren.