2009-12-24 4 views
6

Mein Vorgesetzter im Büro sagt mir, dass er eine Demonstration mit einer Vorabversion von Microsoft "Geneva" (jetzt Windows Identity Foundation) gesehen hat, wo ein Entwickler dies getan hat Folgendes:Verwenden von Windows Identity Foundation, um jemanden in eine ASP.net-Anwendung einzuloggen

  1. Er richtete eine ASP.net-Webanwendung ein, in der sich ein Benutzer mit einem angepassten Anmeldesystem anmelden konnte. Hinter den Kulissen protokolliert die Webanwendung den Benutzer als Benutzer in einem Active Directory.

  2. Die Benutzer anmeldet.

  3. Sobald der Benutzer angemeldet ist, der die ASP.net Web-Anwendungs-Thread läuft als die in Benutzer für die Dauer der Sitzung des Benutzers protokolliert und Ressourcen im Netzwerk zugreifen können (wie zum Beispiel das Ausführen von SQL-Abfragen auf Tabellen, deren Zugriff kontrolliert Active Directory)

Schritte 2) und 3) sind genau die gleichen wie mit dem „integrierten Windows-Authentifizierung“ -Einstellung in der unter „Sicherheit“ von der Websiteeinstellungen in IIS. Schritt 1) ​​unterscheidet sich, da wir ein benutzerdefiniertes Anmeldesystem anstelle der Kerberos-Authentifizierung verwenden.

Wir möchten eine unserer Anwendungen so einrichten, dass sie genau wie in 1), 2) und 3) beschrieben funktioniert. Die gesamte Dokumentation, die ich in Bezug auf Windows Identify Foundation gesehen habe, handelt jedoch von Cardspace und Federated Security. Wir haben derzeit kein Interesse an einer dieser Technologien.

Wir möchten nur Benutzer hinter den Kulissen in Active Directory-Konten anmelden.

Ja, wir haben versucht, die ActiveDirectoryMembershipProvider mit Forms Authentication, aber es ist ein komplettes Klud, um tatsächlich auf Ressourcen im Netzwerk zugreifen, die Identitätswechsel auf jeder Seite erfordern!

UPDATE Jan 7, 2010. Okay, ich arbeite seit einiger Zeit daran, und alles, was ich erreicht habe, fällt nicht in das, was ich erreichen möchte. Vielleicht ist die Funktionalität, die ich möchte, nicht in der WIF-Version enthalten.

Hier ist, wo ich jetzt bin. Ich habe einige Dokumentation auf MSDN gefunden, die angibt, dass in ASP.net drei verschiedene Identitäten verwendet werden: die von HttpContext.Current.User angegebene Identität, die durch angegebene Identität und schließlich die von WindowsIdentity.GetCurrent angegebene Identität. link

In einem Beispiel, wo ich den Prozess, den ich zu entwerfen suche, möchte ich eine SQL-Abfrage als der angemeldete Benutzer durchführen. In meinem Debugger sehe ich, dass ich die Benutzer HttpContext und Thread einfach auf den angemeldeten Benutzer festlegen kann. Wenn ich jedoch eine Verbindung mit dem SQL-Server mithilfe der Windows-Authentifizierung herstelle, wird immer immer der Benutzer WindowsIdentity.GetCurrent verbunden, 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 nicht verwenden, da sich meine Benutzer anmelden müssen, indem sie einen Zauberflöten-Song spielen und Windows-Authentifizierung keine Unterstützung für die Anmeldung mit Zauberflöten bietet.

Um zu verdeutlichen, gibt es keine Probleme mit dem Erhalt einer WindowsIdentity, die den angemeldeten Benutzer darstellt (der sich mit einem Zauberflötenlied angemeldet hat). Das Problem ist, dass ich das WindowsIdentity nicht verwenden kann, um SQL-Abfragen für meinen Benutzer durchzuführen.

Antwort

5

Mit WIF können Sie es so konfigurieren, dass eine anspruchsbasierte Identität einem AD-Konto zugeordnet wird. Der Anspruch kann entweder ein Antrag auf eine Föderation oder eine Informationskarte sein. c2WTS führt diese Funktion aus.

Auch wenn es tut Karte wegen Delegation sind Sie immer gehen zu müssen, delegieren, wenn Sie die AD Identität verwenden möchten IIS Identitätswechsel - das ist nur, wie es funktioniert, wenn Sie Setup Kerberos delegation für IIS

+0

Mein Vorgesetzter ist sehr spezifisch, dass er keinen Identitätswechsel verwenden möchte. Außerdem meldet sich der Endbenutzer an, indem er ein Lied auf einer Zauberflöte spielt. Wenn der Song korrekt ist, wird der Benutzer über ein AD-Konto programmgesteuert angemeldet. Ich habe absolut keinen Weg um die Tatsache, dass der Benutzer sich anmeldet, indem er ein Lied auf der Zauberflöte spielt. Was ich brauche, ist eine Möglichkeit, das Programm so zu verhalten, als wären sie mit der Windows-Authentifizierung angemeldet, sobald sie den Zauberflötenlied richtig gespielt haben. –

+0

Nein, du verlangst das Unmögliche. Die Windows-Authentifizierung verwendet den Identitätswechsel. Wenn Ihr Vorgesetzter angibt, dass Sie ihn nicht verwenden können, können Sie die Windows-Authentifizierung nicht nachahmen. – blowdart

+0

Danke, Blowdart. Ich muss mich selbst korrigieren. Was ich damit meinte ist, dass wenn Sie die Windows-Authentifizierung mit IIS verwenden, der Webserver den angemeldeten Benutzer transparent imitiert. Bei der Formularauthentifizierung muss ich programmatisch einen Identitätswechsel vornehmen, den wir vermeiden möchten. der AdMembershipProvider hilft mir dabei überhaupt nicht. Ich kann mich nicht mit einem Formularauthentifizierungs-Cookie ausgeben. Mein sup. sagt, dass er eine Demo gesehen hat, bei der Geneva irgendwie dazu benutzt wurde, einen User automatisch mit einem AD Account einzuloggen, obwohl sich der User mit seinem Zauberflötenlied anmeldet. –

1

Sie kann dasselbe mit Identitätsidentitätswechsel in ASP.net erreichen. Außerdem müssen Sie die Windows-integrierte 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.

Verwandte Themen