Diese Dokumentation wurde archiviert und wird nicht länger gepflegt.

Vorgehensweise: Verwenden einer Fehler-URL für die benutzerdefinierte Fehlerbehandlung

Veröffentlicht: April 2011

Letzte Aktualisierung: Juni 2015

Betrifft: Azure

  • Zugriffssteuerung für Microsoft Azure Active Directory (auch Zugriffssteuerungsdienst oder ACS)

In diesem Thema wird erläutert, wie das die Fehler-URL-Funktion zum Implementieren einer benutzerdefinierten Behandlung von Anmeldefehlern in einer Anwendung der vertrauenden Seite implementiert wird. Eine Fehler-URL ermöglicht das Senden von Fehlern, die ACS für die Anwendung der vertrauenden Seite erstellt, damit die Anwendung Fehler protokollieren und auf sie reagieren kann. Beispielsweise können ASP.NET-Websites die Fehler-URL-Funktion verwenden, um Endbenutzern Fehlermeldungen anzuzeigen, die das Markendesign und Aussehen und Verhalten der Website widerspiegeln.

  • Ziele

  • Überblick

  • Zusammenfassung der Schritte

  • Schritt 1 – Aktivieren der Fehler-URL-Funktion

  • Schritt 2 – Erstellen der Fehlerhilfsklassen

  • Schritt 3 – Verarbeiten einer JSON-codierten Fehlermeldung

  • Schritt 4 – Konfigurieren des anonymen Zugriffs auf die Fehlerseite

  • Schritt 5 – Testen der Lösung

  • Identifizieren der erforderlichen Konfiguration für die Verwendung der Fehler-URL-Funktion.

  • Identifizieren des Hilfscodes, der für die Verarbeitung von Fehlermeldungen von ACS erforderlich ist.

  • Identifizieren und Problembehandlung potenzieller Fallstricke.

Eine Fehler-URL gibt die Webadresse an, an die ACS Benutzer umleitet, wenn während des Anmeldevorgangs ein Fehler auftritt. Das Ziel der Fehler-URL ist normalerweise eine benutzerdefinierte Fehlerseite, die von der Anwendung der vertrauenden Seite gehostet wird. Als Teil der Weiterleitung stellt ACS der Anwendung der vertrauenden Seite Informationen über den Fehler als JSON-codierten HTTP-URL-Parameter zur Verfügung. Sie können die JSON-codierten Fehlerinformationen in die benutzerdefinierte Fehlerseite einschließen und/oder statischen Hilfetext anzeigen. Das folgende Beispiel zeigt eine JSON-codierte Fehlermeldung.

{"context":null,"httpReturnCode":401,"identityProvider":"Google","timeStamp":"2010-12-17 21:01:36Z","traceId":"16bba464-03b9-48c6-a248-9d16747b1515","errors":[{"errorCode":"ACS30000","errorMessage":"Fehler beim Verarbeiten einer OpenID-Anmeldeantwort."},{"errorCode":"ACS50019","errorMessage":"Die Anmeldung wurde vom Benutzer abgebrochen."}]}

Verwenden Sie den folgenden Prozess zum Behandeln von ACS-Fehlermeldungen:

  • Schritt 1 – Aktivieren der Fehler-URL-Funktion

  • Schritt 2 – Erstellen der Fehlerhilfsklassen

  • Schritt 3 – Verarbeiten einer JSON-codierten Fehlermeldung

  • Schritt 4 – Konfigurieren des anonymen Zugriffs auf die Fehlerseite

  • Schritt 5 – Testen der Lösung

  1. Navigieren Sie zum Microsoft Azure-Verwaltungsportal (https://manage.WindowsAzure.com), melden Sie sich an, und klicken Sie dann auf Active Directory. (Hinweis für die Fehlerbehebung: Das Element "Active Directory" fehlt oder ist nicht verfügbar)

  2. Um einen Namespace für die Zugriffssteuerung zu verwalten, wählen Sie den Namespace aus und klicken Sie dann auf Verwalten. (Oder klicken Sie auf Namespaces für die Zugriffssteuerung, wählen Sie den Namespace aus und klicken Sie dann auf Verwalten.)

  3. Klicken Sie auf Anwendungen der vertrauenden Seite, und wählen Sie eine Anwendung der vertrauenden Seite aus.

  4. Geben Sie auf der Seite Anwendung der vertrauenden Seite bearbeiten die URL Ihrer Fehlerseite im Feld Fehler-URL ein.

    ACS leitet Benutzer auf diese Seite um, wenn Anmeldefehler auftreten. Darüber hinaus sendet ACS JSON-URL-codierte Parameter an diese Seite, die die Fehlerdetails enthält.

In diesem Schritt werden die Fehlerhilfsklassen erstellt, mit denen die JSON-codierten Fehlermeldungen deserialisiert werden.

  1. Fügen Sie Ihrer Webanwendung eine Klassendatei hinzu, und geben Sie ihr dann einen Namen, wie etwa Error.cs.

  2. Implementieren Sie die Klasse Error wie folgt.

    public class Error
    {
        public string errorCode { get; set; }
        public string errorMessage { get; set; }
    }
    
    

    Fügen Sie eine weitere Klassendatei hinzu, und geben Sie ihr dann einen Namen, wie etwa ErrorDetails.cs.

  3. Implementieren Sie die Klasse ErrorDetails wie folgt.

    public class ErrorDetails
    {
        public string context { get; set; }
        public int httpReturnCode { get; set; }
        public string identityProvider { get; set; }
        public Error[] errors { get; set; }
    }
    

Diese Klassen werden im nächsten Schritt bei der Verarbeitung von Fehlermeldungen von ACS verwendet.

In diesem Schritt wird dargestellt, wie die JSON-codierten Fehlermeldungen, die von ACS erstellt wurden, verarbeitet werden.

  1. Fügen Sie Ihrer ASP.NET-Anwendung eine ASPX-Webseite hinzu, und geben Sie ihr dann einen Namen, wie etwa ErrorPage.aspx.

  2. Fügen Sie die folgenden Bezeichnungs-Steuerelemente in das ASP.NET-Markup ein.

    <asp:Label ID="lblIdntityProvider" runat="server"></asp:Label> 
    <asp:Label ID="lblErrorMessage" runat="server"></asp:Label> 
    
    
  3. Wechseln Sie zur Codedatei der Seite (ErrorPge.aspx.cs).

  4. Fügen Sie ganz oben die folgende Deklaration hinzu.

    using System.Web.Script.Serialization;
    
    
  5. Fügen Sie der Methode Page_Load den folgenden Code hinzu.

    JavaScriptSerializer serializer = new JavaScriptSerializer(); ErrorDetails error = serializer.Deserialize<ErrorDetails>( 
    
    
                                         Request["ErrorDetails"] ); lblErrorMessage.Text = string.Join("<br/>", 
                                        error.errors.Select(er => string.Format("Error Code {0}: {1}", 
                                        er.errorCode, er.errorMessage)).ToArray());
    
    
    
    

    Dieser Code verarbeitet JSON-codierte Fehlermeldungen von ACS.

In diesem Schritt wird der anonyme Zugriff auf die Seite "ErrorPage.aspx" konfiguriert. Wenn die Seite geschützt ist und Autorisierung erfordert, ergibt sich eine unendliche Weiterleitungsschleife. Wenn dies eintritt, während ACS versucht, auf die Seite zuzugreifen, sendet ACS einen JSON-codierten Fehler.

noteHinweis
Da auf die Fehlerseite anonym zugegriffen werden kann und diese ggf. Code enthält, der HTML zurücksendet und/oder Daten in Ihre Datenbank schreibt, sollten Sie sicherstellen, dass siteübergreifende Skriptingangriffe und die Einschleusung von SQL-Code verhindert werden. In den folgenden Ressourcen wird dieser Vorgang ausführlicher beschrieben:

  • Öffnen Sie die Web.config-Datei in Ihrer Anwendung, und fügen Sie den folgenden Eintrag hinzu.

    <location path="ErrorPage.aspx">
      <system.web>
        <authorization>
          <allow users="*" />
        </authorization>
      </system.web>
    </location>
    

    Dadurch wird sichergestellt, dass Zugriff auf die Seite nicht zu einer unendlichen Weiterleitungsschleife führt.

In diesem Schritt testen Sie die Fehler-URL-Konfiguration und -Implementierung.

  1. Navigieren Sie zum Microsoft Azure-Verwaltungsportal (https://manage.WindowsAzure.com), melden Sie sich an, und klicken Sie dann auf Active Directory. (Hinweis für die Fehlerbehebung: Das Element "Active Directory" fehlt oder ist nicht verfügbar)

  2. Um einen Namespace für die Zugriffssteuerung zu verwalten, wählen Sie den Namespace aus und klicken Sie dann auf Verwalten. (Oder klicken Sie auf Namespaces für die Zugriffssteuerung, wählen Sie den Namespace aus und klicken Sie dann auf Verwalten.)

  3. Klicken Sie auf Regelgruppen , und klicken Sie dann auf eine Regelgruppe, die der Anwendung der vertrauenden Seite zugeordnet ist.

  4. WarningWarnung
    Der folgende Schritt kann nicht rückgängig gemacht werden. Wenn Sie generierte Regeln löschen, können diese jedoch auf einfache Weise erneut generiert werden.

  5. Wählen Sie auf der Seite Regelgruppe bearbeiten alle Regeln im Abschnitt Regeln aus, und klicken Sie dann auf Ausgewählte Regeln löschen.

  6. Klicken Sie auf Speichern.

  7. Kehren Sie zu Ihrer Website zurück, und navigieren Sie dann mithilfe Ihres Browsers zu einer der Seiten.

  8. Sie sollten zur Authentifizierung an Ihren Identitätsanbieter (Windows Live ID (Microsoft-Konto), Google, Facebook, Yahoo! oder – je nachdem, was für Ihre vertrauende Seite als Identitätsanbieter konfiguriert ist) weitergeleitet werden.

  9. Nach der erfolgreichen Authentifizierung sollten Sie erneut an ACS weitergeleitet werden, und es sollte ein Fehler generiert werden, weil keine Regeln definiert sind.

  10. Dieser Fehler sollte auf der Fehlerseite angezeigt werden, die Sie in Schritt 2 – Erstellen der Fehlerhilfsklassen erstellt haben, und sieht in etwa wie folgt aus:

    uri:WindowsLiveID Fehlercode ACS50000: Fehler beim Ausstellen eines Tokens.

Eine andere Methode zum Testen besteht im Verweigern der Zustimmung des Benutzers. Dies erfolgt bei der Anmeldung mithilfe von Facebook oder Google.

Anzeigen: