Verwenden von Windows Identity Foundation zum Anmelden einer Person bei einer ASP.net-Anwendung

StackOverflow https://stackoverflow.com/questions/1958596

  •  21-09-2019
  •  | 
  •  

Frage

Mein Vorgesetzter im Büro erzählt mir, dass er eine Demonstration mit einer Vorabversion von Microsoft „Geneva“ (jetzt Windows Identity Foundation) gesehen hat, bei der ein Entwickler Folgendes getan hat:

  1. Er richtete eine Art ASP.net-Webanwendung ein, bei der sich ein Benutzer über ein angepasstes Anmeldesystem anmelden konnte.Im Hintergrund meldet die Webanwendung den Benutzer als Benutzer in einem Active Directory an.

  2. Der Benutzer meldet sich an.

  3. Sobald der Benutzer angemeldet ist, wird der ASP.net-Webanwendungsthread für die Dauer der Sitzung des Benutzers als angemeldeter Benutzer ausgeführt und kann auf Ressourcen im Netzwerk zugreifen (z. B. Ausführen von SQL-Abfragen für Tabellen, deren Zugriff über Active Directory gesteuert wird).

Die Schritte 2) und 3) sind genau die gleichen wie bei der Verwendung der Einstellung „Integrierte Windows-Authentifizierung“ auf der Registerkarte „Verzeichnissicherheit“ der Website-Einstellungen in IIS.Schritt 1) ​​ist anders, da wir im Gegensatz zur Kerberos-Authentifizierung ein benutzerdefiniertes Anmeldesystem verwenden.

Wir möchten eine unserer Anwendungen so einrichten, dass sie genau wie in 1), 2) und 3) beschrieben funktioniert.Allerdings geht es in der gesamten Dokumentation, die ich zu Windows Identify Foundation gesehen habe, um Cardspace und Federated Security.Wir haben derzeit keinerlei Interesse daran, eine dieser Technologien zu nutzen.

Wir möchten lediglich in der Lage sein, Benutzer hinter den Kulissen bei Active Directory-Konten anzumelden.

Ja, das haben wir ausprobiert ActiveDirectoryMembershipProvider mit Forms Authentication, aber es ist eine völlige Kunstfertigkeit, tatsächlich auf Ressourcen im Netzwerk zuzugreifen, die einen Identitätswechsel auf jeder Seite erfordern!

UPDATE 7. Januar 2010.Okay, ich arbeite schon eine Weile daran und alles, was ich herausgefunden habe, bleibt hinter dem zurück, was ich erreichen möchte.Möglicherweise ist die von mir gewünschte Funktionalität nicht in der Release-Version von WIF enthalten.

Hier bin ich jetzt.Ich habe auf MSDN eine Dokumentation gefunden, die darauf hinweist, dass in ASP.net drei verschiedene Identitäten verwendet werden:die von angegebene Identität HttpContext.Current.User, die von angegebene Identität Thread.CurrentPrincipal, und schließlich die durch angegebene Identität WindowsIdentity.GetCurrent. Verknüpfung

In einem Beispiel, in dem ich den Prozess verwenden möchte, den ich entwerfen möchte, möchte ich als angemeldeter Benutzer eine SQL-Abfrage ausführen.In meinem Debugger sehe ich, dass ich die HttpContext- und Thread-Benutzer problemlos auf den angemeldeten Benutzer festlegen kann.Wenn ich jedoch mithilfe der Windows-Authentifizierung eine Verbindung zum SQL-Server herstelle, wird die Verbindung immer wie folgt hergestellt WindowsIdentity.GetCurrent Benutzer und dieser Benutzer ist immer immer die Identität des ASP.net-Prozesses, es sei denn, ich verwende die Windows-Authentifizierung mit Identitätswechsel.Ich kann die Windows-Authentifizierung mit meiner Anwendung absolut nicht verwenden, da sich meine Benutzer anmelden müssen, indem sie ein Zauberflötenlied abspielen, und die Windows-Authentifizierung die Anmeldung mit Zauberflötenliedern nicht unterstützt.

Zur Klarstellung: Es ist kein Problem, eine zu erhalten WindowsIdentity Stellt den angemeldeten Benutzer dar (der sich mit einem Zauberflötenlied angemeldet hat).Das Problem ist, dass ich das nicht nutzen kann WindowsIdentity um SQL-Abfragen für meinen Benutzer durchzuführen.

War es hilfreich?

Lösung

Mit WIF können Sie es so konfigurieren, dass eine anspruchsbasierte Identität einem AD-Konto zugeordnet wird. Der Anspruch kann entweder ein Verbundidentitätsanspruch sein oder über eine Informationskarte übermittelt werden. c2WTS übernimmt diese Funktion.

Selbst wenn es aufgrund der Delegierung zu einer Zuordnung kommt, müssen Sie immer delegieren, wenn Sie die AD-Identität verwenden möchten, die IIS imitiert – so funktioniert es einfach, es sei denn, Sie richten es ein Kerberos-Delegation für IIS

Andere Tipps

Dasselbe können Sie mit Identity Impersonation in ASP.net erreichen.Außerdem müssen Sie die integrierte Windows-Authentifizierung für Ihre Web-App aktivieren.Dies wird den Zweck lösen.Wenn der angemeldete Benutzer nicht über die erforderlichen Rechte zum Zugriff auf Ressourcen verfügt, erhalten Sie Sicherheitsausnahmen, die Sie behandeln müssen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top