Liebe Community,
ich erstellte eine Web-Anwendung (ASP.NET Core 6.0) die auch betreut wird (IT Consulting). Aufgrund der unterschiedlichen Sichtbarkeit von Daten, je nach Arbeitsbereich, benötige ich WindowsUser-Daten wie z.B. auch beim Einloggen um dies festhalten zu können (funktioniert lokal beim Testen bereits super, nur am Server wird der Standarduser des AppPools verwendet)
WindowsIdentity windowsIdentity = WindowsIdentity.GetCurrent();
// Überprüfen, ob die Windows-Identität gültig ist
if (windowsIdentity != null)
{
// Abrufen des Benutzernamens aus der Windows-Identität
string userName = windowsIdentity.Name;
// Konstruktion des PrincipalContext-Objekts für die Domäne
using (PrincipalContext principalContext = new PrincipalContext(ContextType.Domain))
{
// Finden des Benutzerprinzipals im Active Directory
UserPrincipal userPrincipal = UserPrincipal.FindByIdentity(principalContext, IdentityType.SamAccountName, userName);
//Überprüfen, ob das Benutzerprinzipal - Objekt gefunden wurde
if (userPrincipal != null)
{
// Abrufen der E-Mail-Adresse des Benutzers aus dem Benutzerprinzipal
string userPrincipalName = userPrincipal.UserPrincipalName;
//Verwendung der E - Mail - Adresse des Benutzers
Login = "JA";
}
Aufgrund von Erfahrungen denke ich an einen Single-Sign-On User der meines Wissens nach (Infos vom ehemaligen Server-Admin) extra am IIS Server der Anwendung im APP-POOL erstellt wird und konfiguriert werden muss (Lässt das Zugreifen auf WindowsUser-Daten zu | Der App-Pool verwendet für die Applikation diesen SSO User | etc.)
Gibt es eine kleine Anleitung hierfür wie das Schritt für Schritt gemacht werden muss, auch ob ich ev. noch NuGet-Packeges installieren muss im VS.
Alle Infos die ich hierfür benötige sind wichtig.
Bitte um eure Hilfe, DANKE.
Freundliche Grüße
Du erstellst einen eigenen App Pool mit einem eigenen User.
Diesen Pool weißt Du der Website im IIS zu. Das geht alles über die Server Konsole, nicht Visual Studio etc..
In der App konfiguriert man hier gar nichts, auch nicht mit irgendwelchen Paketen.
PS: auch mit Single Sign On hat das nichts am Hut. Das ist einfach nur ein App Pool mit einem User.
Das ist auch alles in den Microsoft Docs gut dokumentiert.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Das Problem ist, wenn ich die Software am Server hochlade, wird durch - using (PrincipalContext principalContext = new PrincipalContext(ContextType.Domain)) - ein Fehler ausgeworfen. (Es wird bereits ein User eines App-Pools verwendet, aber eben keiner vom AD)
=> Der Grund, warum ich an einen SSO User dachte ist, da ja dadurch der Windows User vom AD geladen wird und ich glaube, dass dies dann funktioniert.
Wie sollte es aus Sicht eines IT-Spezialisten wie dir in der Praxis gemacht werden?
Danke für die schnelle Rückmeldung. (:
Zitat von Moma2023
=> Der Grund, warum ich an einen SSO User dachte ist, da ja dadurch der Windows User vom AD geladen wird und ich glaube, dass dies dann funktioniert.
Jo, aber das ist kein SSO. SSO ist ein Workflow ⇒ https://de.wikipedia.org/wiki/Single_Sign-on
Hier hinterlegst Du einfach einen entsprechenden User; in Deinem Fall dann halt ein Domänenuser.
Alle anderen Funktionalitäten, die hier eine Rolle spielen, macht der IIS automatisiert durch Kerberos. SSO ist in Deinem Fall gar nicht hilfreich (weil so SSO gar nicht funktioniert).
Wie sollte es aus Sicht eines IT-Spezialisten wie dir in der Praxis gemacht werden?
So wie ichs Dir beschrieben hab. Bin aber kein IT Spezialist, sondern hab nen Entwickler-Hintergrund.
Entweder macht das die IT manuell / automatisiert, oder jemand mit Zugriff macht das.
Brauchst Username und Password des Users, alles andere sind Eingabefelder vom IIS. Kein Hexenwerk.
IIS - Application Pool Identities
Mit der Anwendung hat das nix zutun. Das ist völlig getrennt.
Die Anwendung bekommt die Identity "von Außen" (vom Hosting) - das wars.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Ah jetzt verstehe ich, danke für die Detailinfos. =))