(0) exportieren Drucken
Alle erweitern

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

Veröffentlicht: April 2011

Letzte Aktualisierung: Mai 2011

Betrifft: Windows Azure

Gilt für

  • Microsoft® Windows Azure™ AppFabric ACS (Access Control Service, Zugriffssteuerungsdienst)

Zusammenfassung

In diesem Thema werden die Schritte beschrieben, die für die Ausführung benutzerdefinierter Fehlerbehandlung für die Anwendung einer vertrauenden Seite erforderlich sind. Eine Fehler-URL ermöglicht das Senden von durch ACS generierte Fehler an die Anwendung der vertrauenden Seite, damit diese die Fehler wie gewünscht verarbeiten kann. Wenn die Anwendung der vertrauenden Seite z. B. eine ASP.NET-Website ist, kann sie die Fehler-URL-Funktion verwenden, um Fehlermeldungen für Endbenutzer bereitzustellen, die besser auf die Website zugeschnitten sind und das gleiche Erscheinungsbild wie die restliche Website aufweisen. Außerdem können Fehler für die weitere Analyse protokolliert werden.

Inhalt

  • Ziele

  • Übersicht

  • 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

Ziele

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

Übersicht

Sie können eine Fehler-URL festlegen, die definiert, wohin ACS Benutzer weiterleitet, wenn während des Anmeldevorgangs ein Fehler auftritt (z. B. http://www.fabrikam.com/billing/error.aspx). Dabei handelt es sich normalerweise um eine benutzerdefinierte Fehlerseite, die in der Anwendung der vertrauenden Seite ausgeführt wird. Als Teil der Weiterleitung stellt ACS Details zum Fehler für die Anwendung der vertrauenden Seite als JSON-codierten HTTP-URL-Parameter zur Verfügung. Die benutzerdefinierte Fehlerseite kann so konzipiert werden, dass sie die JSON-codierten Fehlerinformationen zum Rendern der tatsächlichen Fehlermeldung verwendet, die angezeigt wird, und/oder zum Anzeigen statischen Hilfetexts. 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 der Schritte

Die folgenden Schritte müssen ausgeführt werden, um Fehlermeldungen von ACS verarbeiten zu können:

  • 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. Melden Sie sich bei http://portal.windows.net (http://go.microsoft.com/fwlink/?LinkID=129428) an.

  2. Klicken Sie auf der Seite Meine Projekte auf Ihr Projekt.

  3. Klicken Sie auf der Seite Projekt:<<IhrProjekt>> auf den Link Zugriffssteuerung für den gewünschten Namespace.

  4. Klicken Sie auf der Seite Zugriffssteuerungseinstellungen: <<IhrNamespace>> auf den Link Zugriffssteuerung verwalten.

  5. Klicken Sie auf der Seite Zugriffssteuerungsdienst auf den Link Anwendungen der vertrauenden Seite.

  6. Klicken Sie auf der Seite Anwendungen der vertrauenden Seite auf die Anwendung Ihrer vertrauenden Seite.

  7. Beachten Sie auf der Seite Vertrauende Seite bearbeiten das Feld Fehler-URL im Abschnitt Anwendung der vertrauenden Seite - Details.

  8. Geben Sie Ihre Fehlerseiten-URL ein. Dies ist die Seite, die die JSON-URL-codierten Parameter mit den Fehlerdetails empfängt.

Schritt 2 – Erstellen der Fehlerhilfsklassen

In diesem Schritt werden die Fehlerhilfsklassen für die Deserialisierung von JSON-codierten Fehlermeldungen erstellt.

So erstellen Sie Fehlerhilfsklassen

  1. Fügen Sie Ihrer Webanwendung eine Klassendatei hinzu, und geben Sie ihr dann einen Namen, z. B. 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, 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 bei der Verarbeitung von Fehlermeldungen von ACS verwendet.

Schritt 3 – Verarbeiten einer JSON-codierten Fehlermeldung

In diesem Schritt wird die Verarbeitung von JSON-codierten Fehlermeldungen gezeigt, die von ACS generiert werden.

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, z. B. ErrorPage.aspx. Diese dient als Fehlerseite, die die JSON-codierte Fehlermeldung verarbeitet, die von ACS gesendet wird.

  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());
    
    
    
    

    Der oben aufgeführte Code ist für die Verarbeitung von JSON-codierten Fehlermeldungen verantwortlich, die von ACS empfangen werden.

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, ist das Ergebnis eine Weiterleitungsendlosschleife. Wenn dieser Fall eintritt, wenn ACS versucht, auf die Seite zuzugreifen, wird ein JSON-codierter Fehler gesendet.

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:

So konfigurieren Sie den anonymen Zugriff auf die Fehlerseite

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

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

    Auf diese Weise wird sichergestellt, dass Ihre Seite nicht zu einer Weiterleitungsendlosschleife 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. Melden Sie sich bei http://portal.windows.net (http://go.microsoft.com/fwlink/?LinkID=129428) an.

  2. Klicken Sie auf der Seite Meine Projekte auf Ihr Projekt.

  3. Klicken Sie auf der Seite Projekt:<<IhrProjekt>> auf den Link Zugriffssteuerung für den gewünschten Namespace.

  4. Klicken Sie auf der Seite Zugriffssteuerungseinstellungen: <<IhrNamespace>> auf den Link Zugriffssteuerung verwalten.

  5. Klicken Sie auf der Seite Zugriffssteuerungsdienst auf den Link Regelgruppe.

  6. Klicken Sie auf der Seite Regelgruppen auf die Regelgruppe, die sich auf Ihre vertrauende Seite bezieht.

    WarningWarnung
    Dieser Schritt kann nicht rückgängig gemacht werden. Wenn Sie generierte Regeln löschen, können diese jedoch auf einfache Weise erneut generiert werden. Löschen Sie auf der Seite Regelgruppe bearbeiten alle Regeln. Wählen Sie zum Löschen aller Regeln alle Regeln im Abschnitt Regeln aus, und klicken Sie dann auf den Link Ausgewählte Regeln löschen.

  7. Klicken Sie auf Speichern.

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

  9. Sie sollten an Ihren Identitätsanbieter für die Authentifizierung weitergeleitet werden (Windows Live ID, Google, Facebook, Yahoo! oder AD FS 2.0 - je nachdem, was für Ihre vertrauende Seite als Identitätsanbieter konfiguriert ist).

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

  11. Dieser Fehler sollte auf der in Schritt 2 – Erstellen der Fehlerhilfsklassen erstellten Fehlerseite angezeigt werden. Er ähnelt dem folgenden Fehler:

    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:
© 2014 Microsoft