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

Aktualisiert: 19. Juni 2015

Gilt für: Azure

Gilt für

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

Zusammenfassung

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 es Ihnen, Fehler zu senden, die ACS zurück an die vertrauende Parteianwendung generiert, damit die Anwendung Fehler protokollieren und auf Fehler 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.

Inhalte

  • Ziele

  • Übersicht

  • Zusammenfassung von Schritten

  • 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

Ziele

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

  • Identifizieren Sie den Hilfscode, der zum Verarbeiten von Fehlermeldungen von ACS erforderlich ist.

  • Identifizieren und Problembehandlung potenzieller Fallstricke.

Übersicht

Eine Fehler-URL gibt die Webadresse an, an die ACS Benutzer umleiten, 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. Im Rahmen der Umleitung gibt ACS Informationen zu dem Fehler der vertrauenden Parteianwendung als JSON-codierten HTTP-URL-Parameter zurück. 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."}]}

Zusammenfassung von Schritten

Verwenden Sie den folgenden Prozess, um ACS-Fehlermeldungen zu behandeln:

  • 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

Schritt 1 – Aktivieren der Fehler-URL-Funktion

So aktivieren Sie die Fehler-URL-Funktion für Ihre vertrauende Seite

  1. Wechseln Sie zum Microsoft Azure Verwaltungsportal (https://manage.WindowsAzure.com), melden Sie sich an, und klicken Sie dann auf Active Directory. (Problembehandlungstipps: Das Element "Active Directory" fehlt oder 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 den Benutzer an diese Seite um, wenn Anmeldefehler auftreten. Außerdem sendet ACS JSON-URL-codierte Parameter an diese Seite, die die Fehlerdetails enthalten.

Schritt 2 – Erstellen der Fehlerhilfsklassen

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

So erstellen Sie Fehlerhilfsklassen

  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 ihm einen Namen, z. B. 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 verwendet, wenn Fehlermeldungen von ACS verarbeitet werden.

Schritt 3 – Verarbeiten einer JSON-codierten Fehlermeldung

In diesem Schritt wird gezeigt, wie JSON-codierte Fehlermeldungen verarbeitet werden, die ACS generiert.

So verarbeiten Sie eine JSON-codierte Fehlermeldung, die von ACS generiert wird

  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.

Schritt 4 – Konfigurieren des anonymen Zugriffs auf die Fehlerseite

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 auftritt, wenn ACS versucht, auf die Seite zuzugreifen, sendet ACS einen JSON-codierten Fehler.

Hinweis

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:

So konfigurieren Sie den anonymen Zugriff auf die Fehlerseite

  • Ö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.

Schritt 5 – Testen der Lösung

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

So aktivieren Sie die Fehler-URL-Funktion für Ihre vertrauende Seite

  1. Wechseln Sie zum Microsoft Azure Verwaltungsportal (https://manage.WindowsAzure.com), melden Sie sich an, und klicken Sie dann auf Active Directory. (Problembehandlungstipps: Das Element "Active Directory" fehlt oder 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. Warnung

    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 zu Ihrem Identitätsanbieter für die Authentifizierung umgeleitet werden – Windows Live ID (Microsoft-Konto), Google, Facebook, Yahoo!, oder – was für Ihre vertrauende Partei als Identitätsanbieter konfiguriert ist.

  9. Nach erfolgreicher Authentifizierung sollten Sie wieder in ACS umgeleitet werden, was einen Fehler generieren sollte, da keine Regeln definiert sind.

  10. Dieser Fehler sollte auf Ihrer Fehlerseite angezeigt werden, die Sie in Schritt 2 erstellt haben – Fehlerhilfeklassen erstellen und ähnlich wie folgt sein:

    uri:WindowsLiveID Error Code ACS50000: Es gab einen Fehler, der ein Token ausgibt.

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