Freigeben über


Einmaliges Abmelden

Aktualisiert: 19. Juni 2015

Gilt für: Azure

Microsoft Azure Active Directory Access Control (auch als Access Control Service oder ACS bezeichnet) enthält jetzt eine optionale Single-Sign-Out-Funktion, um einmaliges Anmelden zu ergänzen. Das Ergebnis ist eine vollständige und konsistente Anmelde- und Abmeldeumgebung für Benutzer webbasierter Anwendungen, die in ACS integriert sind.

Wenn sich ein Endbenutzer von einer Anwendung der vertrauenden Seite abmeldet, die einmaliges Anmelden unterstützt, kann ACS den Benutzer automatisch von der Website des Identitätsanbieters und von allen anderen Anwendungen abmelden, für die die Anmeldung mithilfe dieses Identitätsanbieters erfolgt ist. Wenn sich der Kunde von der Website des Identitätsanbieters abmeldet, kann ACS den Kunden analog dazu automatisch von Anwendungen abmelden, bei denen die Anmeldung mithilfe des Identitätsanbieters erfolgt ist.

In diesem Thema wird erläutert, wie einmaliges Abmelden funktioniert und wie einmaliges Abmelden für Ihre Anwendung der vertrauenden Seite implementiert wird. Überprüfen Sie unbedingt den Beispielcode für die Implementierung von Einmaligem Abmelden in einer ASP.NET MVC 4-Anwendung im Codebeispiel: ASP.NET MVC 4 mit Partneranmeldungt.

Systemanforderungen

Die folgenden Tools und Services sind erforderlich, um einmaliges Abmelden zu implementieren.

  • Azure-Abonnement

  • Visual Studio 2012

Informationen zu einmaligem Abmelden

In jeder Browsersitzung kann ein Kunde einen Verbundidentitätsanbieter auswählen, um sich bei einer Anwendung der vertrauenden Seite anzumelden. Wenn einmaliges Abmelden verwendet wird, wird der Kunde automatisch von allen Anwendungen der vertrauenden Seite abgemeldet, bei denen die Anmeldung mithilfe des gleichen Identitätsanbieters erfolgt ist, wenn sich der Benutzer vom Identitätsanbieter oder der Anwendung der vertrauenden Seite abmeldet.

Der Kunde verwendet z. B. ein Microsoft-Konto (Windows Live ID), um sich bei drei in ACS integrierten Anwendungen der vertrauenden Seite anzumelden. Wenn sich der Kunde von einer dieser Anwendungen abmeldet, wird er automatisch von seinem Microsoft-Konto und den beiden anderen Anwendungen abgemeldet.

Vollständige Unterstützung für einmaliges Abmelden ist für benutzerdefinierte WS-Verbund- und ADFS-Identitätsanbieter verfügbar. Eingeschränkter Einmaliger Abmeldesupport steht für das Facebook-, Google-, Microsoft-Konto und Yahoo! Identitätsanbieter. Diese Identitätsanbieter können keine einmalige Anmeldung initiieren. Wenn eine Anwendung einer vertrauenden Partei jedoch einmaliges Abmelden initiiert, wird der Kunde von diesen Identitätsanbietern abgemeldet und zugeordnete Vertrauensparteianwendungen, bei denen sie sich mit diesem Identitätsanbieter angemeldet haben.

Funktionsweise von einmaligem Abmelden

Einmaliges Abmelden kann vom Identitätsanbieter oder von der Anwendung der vertrauenden Seite initiiert werden. In diesem Abschnitt wird jeder dieser Abmeldevorgänge beschrieben, und es wird erläutert, wie einmaliges Abmelden für Ihre Anwendung der vertrauenden Seite aktiviert werden kann.

Die Anwendung der vertrauenden Seite initiiert die Abmeldung

Wenn Sie einmaliges Abmelden initiieren möchten, wenn sich ein Benutzer von Ihrer Anwendung der vertrauenden Seite abmeldet, senden Sie eine URL mit den folgenden Parametern an den Endpunkt des ACS WS-Verbunds.

  • wa: Auf wsignout1.0 festlegen

  • wreply: Legen Sie den Wert auf die URL der Anmeldeseite fest, also die Seite, auf der der Benutzer umgeleitet wird, wenn die Abmeldung abgeschlossen ist. Dieser Wert sollte teil des RP-Domänennamens sein, z. B. "https://RP.com/"

  • wtrealm: Legen Sie im ACS-Verwaltungsportal auf den Wert der Realm-Eigenschaft der Anwendung der vertrauenden Partei fest.

Im Folgenden finden Sie eine Beispiel-URL für einmaliges Abmelden.

https://<YourNamespace>.accesscontrol.windows.net/v2/wsfederation?wa=wsignout1.0&wtrealm=<YourAppRealm>&wreply=<YourAppRealmLogoutPage>

Beispiel:

https://Fabrikam.accesscontrol.windows.net/v2/wsfederation?wa=wsignout1.0&wtrealm=" https://www.fabrikam.com/" &wreply= https://www.fabrikam.com/logout

Beispielcode, der das einmalige Abmelden von vertrauenden Parteien implementiert, finden Sie im Codebeispiel: ASP.NET MVC 4 mit Partneranmeldung. Dieses Beispiel enthält Code in LogoutController.cs, der die wreply- und wrealm-Werte abruft und eine Instanz der SignOutRequestMessage-Klasse erstellt.

Wenn ACS die Abmelde-URL empfängt, endet ACS die Sitzung des Kunden mit dem Identitätsanbieter, indem eine wsignout1.0-Anforderung gesendet wird. Anschließend sendet ACS Wsignoutcleanup1.0-Nachrichten an andere Vertrauensanbieteranwendungen, bei denen der Benutzer sich mit dem Identitätsanbieter angemeldet hat.

Der Identitätsanbieter initiiert die Abmeldung

Durch den Identitätsanbieter initiierte Abmeldung wird nur für benutzerdefinierte WS-Verbund- und ADFS-Identitätsanbieter unterstützt. Sie kann nicht für die Identitätsanbieter Microsoft-Konto (Windows Live ID), Google, Yahoo! und Facebook unterstützt werden, weil diese Identitätsanbieter ACS oder die Anwendung der vertrauenden Seite nicht benachrichtigen, wenn sich der Benutzer abmeldet.

Wenn sich der Benutzer von einem WS-Federation- oder ADFS-Identitätsanbieter abmeldet, sendet der Identitätsanbieter ACS eine Wsignoutcleanup1.0-Anmeldeanforderungsnachricht mit dem folgenden Format: https://<YourNamespace>.accesscontrol.windows.net/v2/wsfederation?wa=wsignoutcleanup1.0

Wenn ACS eine Wsignoutcleanup1.0-Nachricht empfängt, überprüft sie, ob die Anforderung vomselben Endpunkt stammt wie die Anmeldeanforderung, indem sie den Verweiser im HTTP-Header der Nachricht überprüft: <Referrer>: https://CustomIDP Wobei der Wert von Referrer> der Wert des <Verweisers in der Anmelde-URL im ACSSignOut-Cookie ist.

Anschließend sendet ACS eine Wsignoutcleanup1.0-Nachricht an alle Anwendungen von vertrauenden Parteien in der Clientbrowsersitzung des aktuellen Benutzers, die dem Identitätsanbieter zugeordnet sind. Dieser Vorgang ähnelt dem im Abschnitt "Die Anwendung der vertrauenden Seite initiiert die Abmeldung" beschriebenen Vorgang. Der Identitätsanbieter kann den Browser an eine von ihm gesteuerte Abmeldeseite umleiten, um den Abmeldevorgang abzuschließen.

Der Vorgang des einmaligen Abmeldens

In diesem Abschnitt werden die einzelnen Schritte beim Vorgang des einmaligen Abmeldens beschrieben. Da ACS Ihnen die Einzelheiten abnimmt, müssen Sie diesen Vorgang nicht verstehen. Dieses Verständnis kann jedoch für Anpassungs- oder Debugzwecke hilfreich sein.

Einmaliges Abmelden – Schritt für Schritt

  1. Wenn ACS eine Signout1.0-Anforderung an seinem WS-Federation Endpunkt empfängt, sucht ACS den Identitätsanbieter des Anmeldeanforderungs-Initiators im ACSSignOut-Cookie.

    ACS verwendet die folgenden Ableichregeln, um den Identitätsanbieter zu identifizieren.

    • Wenn der wtrealm-Parameter in der Abmeldeanforderung angegeben wird, sucht ACS nach dem wtrealm-Wert in der Liste der vertrauenden Parteien für jeden Identitätsanbieter.

    • Wenn wtrealm nicht angegeben ist und nur ein Identitätsanbietereintrag im ACSSignOut-Cookie vorhanden ist, verwendet ACS den Identitätsanbieter im ACSSignOut-Cookie.

    • Andernfalls zeigt ACS eine Fehlerseite an, die angibt, dass der Versuch fehlgeschlagen ist, da der Wtrealm-Parameter fehlt.

  2. ACS sendet eine Signout1.0-Nachricht an den Identitätsanbieter, indem eine Seite mit einem Inlineframe-Element (<iframe>) dargestellt wird. ACS fügt außerdem iframe-Elemente> hinzu<, die die Nachricht "SignOutCleanup1.0" zu den Seiten aller aktiven WS-Federation vertrauenden Parteien als der initiierenden Partei enthalten, und ACS entfernt die vertrauenden Parteien aus dem ACSSignOut-Cookie.

  3. Die Seite, die den Abmeldestatus der vertrauenden Seite anzeigt, enthält außerdem JavaScript, das für einen angegebenen Zeitraum ausgeführt wird und dann den Browser umleitet. Wenn ein wreply-Parameter im ACSSignOut-Cookie angegeben wurde, leitet javaScript an die adresse um, die durch den wreply-Wert angegeben wurde, um die Abmeldung abzuschließen. Andernfalls leitet das JavaScript an die Rückgabe-URL der vertrauenden Partei um, wie im ACS-Verwaltungsportal angegeben.

ACS verwendet ein Sitzungscookie namens ACSSignOut, um den Identitätsanbieter aufzuzeichnen, der den Benutzer für die Anwendung authentifiziert hat. Sie können das Cookie in Ablaufverfolgungen der Sitzung anzeigen. Das Sitzungscookies hat das folgende Namensformat: ACSSignOut.<YourACSNamespace>

Das ACSSignOut-Cookie identifiziert die Anwendung der vertrauenden Seite und den Identitätsanbieter, der den Benutzer authentifiziert hat. ACS verwendet das Cookie während der einmaligen Abmeldung, um sicherzustellen, dass der richtige Identitätsanbieter abgemeldet und der Benutzer von anderen Anwendungen der vertrauenden Seite abgemeldet wird, bei denen er sich mithilfe des Identitätsanbieters angemeldet hat.

Einschränkungen des einmaligen Abmeldens

Wenn Sie einmaliges Abmelden verwenden, berücksichtigen Sie die folgenden Einschränkungen.

  • Nur benutzerdefinierte WS-Federation Identitätsanbieter und ADFS-Identitätsanbieter können einmaliges Abmelden initiieren. Anbieter von sozialen Identitäten, z. B. Yahoo, Google, Microsoft-Konto (Windows Live ID) und Facebook, benachrichtigen acS oder die Anwendung der vertrauenden Partei nicht, wenn sich der Kunde von der Identitätsanbieter-Website abmeldet. Aus diesem Grund werden Benutzer von Anwendungen der vertrauenden Seite, die diese Identitätsanbieter verwenden, nicht automatisch abgemeldet, wenn die Abmeldung ihren Ursprung auf der Website des Identitätsanbieters hat.

  • Einmaliges Abmelden ist ggf. nicht in allen Umgebungen effektiv. Wenn ACS eine einmalige Abmeldenachricht von einer Anwendung einer vertrauenden Partei empfängt, sendet sie eine wsignout1.0-Anforderung an den Identitätsanbieter und eine wsignoutcleanup1.0-Nachricht an jede der anderen Anwendungen der vertrauenden Partei. Wenn ACS eine Wsignoutcleanup1.0-Anforderungsnachricht von einem Identifizierungsanbieter empfängt, sendet es eine wsignoutcleanup1.0-Nachricht an jede der Anwendungen der vertrauenden Partei. ACS kann jedoch nicht garantieren, dass der Identitätsanbieter oder die Anwendungen der vertrauenden Seite ordnungsgemäß reagieren, indem sie den Benutzer abmelden.

  • Wenn sich Benutzer vom Google-Identitätsanbieter in Internet Explorer abmelden, zeigt der Browser eine Eingabeaufforderung "Nur sichere Inhalte werden angezeigt" an. Damit die Abmeldung abgeschlossen wird, müssen Benutzer auf "Alle Inhalte anzeigen" klicken. Wenn die Abmeldung abgeschlossen ist, wird der Browser an die durch den Wert des wreply-Parameters angegebene URL umgeleitet.

    Internet Explorer 9 und höhere Versionen von Internet Explorer zeigen die Meldung zu sicheren Inhalten an, wenn auf einer gesicherten Seite nicht gesicherte Inhalte gefunden werden, z. B. Bilder oder Skripts, die von einem nicht gesicherten Server stammen. In diesem Fall wird auf sichere ACS-Inhalte (HTTPS/SSL) und nicht sichere Inhalte (HTTP) vom Identitätsanbieter reagiert. ACS kann dieses Verhalten nicht ändern oder unterdrücken.

    Benutzer können die Benachrichtigung unterdrücken, wie in der Benachrichtigung "Nur sicherer Inhalt wird angezeigt" in Internet Explorer 9 oder höher beschrieben. Weil diese Einstellung jedoch für alle Websites gilt und den Computer des Benutzers ggf. für bösartige Inhalte anfällig macht, wird die Standardeinstellung (die nicht sichere Inhalte (HTTP) blockiert) empfohlen.

Damit Benutzer beim Einleiten der einmaligen Abmeldung unterstützt werden, sollte die Abmeldeseite der Anwendung der vertrauenden Seite Benutzer auffordern, den Browser zu schließen oder sich ausdrücklich von den Anwendungen der vertrauenden Seite und der Website des Identitätsanbieters abzumelden. Das Schließen einer Registerkarte des Browsers, eines Fensters oder einer Seite ist nicht ausreichend. Wenn der Computer gemeinsam verwendet wird oder sich an einem öffentlichen Ort befindet (z. B. ein Kioskcomputer), sollten die Benutzer den Browserverlauf löschen, bevor sie den Browser schließen.

Weitere Informationen

Konzepte

Codebeispiel: ASP.NET MVC 4 mit Partneranmeldung

Weitere Ressourcen

Passive Authentifizierung für ASP.NET in WIF