Share via


Procedure: Een fout-URL gebruiken voor aangepaste foutafhandeling

Bijgewerkt: 19 juni 2015

Van toepassing op: Azure

Van toepassing op

  • Microsoft Azure Active Directory Access Control (ook wel Access Control Service of ACS genoemd)

Samenvatting

In dit onderwerp wordt uitgelegd hoe u de functie Fout-URL gebruikt om aangepaste verwerking van aanmeldingsfouten te implementeren in een relying party-toepassing. Met een fout-URL kunt u fouten verzenden die DOOR ACS worden gegenereerd naar de relying party-toepassing, zodat de toepassing fouten kan registreren en erop kan reageren. ASP.NET websites kunnen bijvoorbeeld de functie Fout-URL gebruiken om foutberichten te presenteren aan eindgebruikers die zijn voorzien van hetzelfde uiterlijk als de website.

Inhoud

  • Doelen

  • Overzicht

  • Samenvatting van de stappen

  • Stap 1: de functie Fout-URL inschakelen

  • Stap 2: de fouthulpklassen maken

  • Stap 3: een JSON-Encoded foutbericht verwerken

  • Stap 4: Anonieme toegang tot de foutpagina configureren

  • Stap 5: Uw werk testen

Doelen

  • Identificeer de vereiste configuratie voor het gebruik van de functie Fout-URL.

  • Identificeer de helpercode die is vereist voor het verwerken van foutberichten van ACS.

  • Mogelijke valkuilen identificeren en oplossen.

Overzicht

Een fout-URL geeft het webadres aan waarnaar ACS gebruikers omleidt als er een fout optreedt tijdens het aanmeldingsproces. Het doel van de fout-URL is doorgaans een aangepaste foutpagina die wordt gehost door de relying party-toepassing. Als onderdeel van de omleiding retourneert ACS informatie over de fout naar de relying party-toepassing als een met JSON gecodeerde HTTP-URL-parameter. U kunt de JSON-gecodeerde foutgegevens opnemen op de aangepaste foutpagina en/of statische Help-tekst weergeven. Hier volgt een voorbeeld van een met JSON gecodeerd foutbericht.

{"context":null,"httpReturnCode":401,"identityProvider":"Google","timeStamp":"2010-12-17 21:01:36Z","traceId":"16bba464-03b9-48c6-a248-9d16747b1515","errors":[{"errorCode":"ACS30000","errorMessage":"There was an error processing an OpenID sign-in response."},{"errorCode":"ACS50019","errorMessage":"Sign-in was canceled by the user."}]}

Samenvatting van de stappen

Gebruik het volgende proces om ACS-foutberichten te verwerken:

  • Stap 1: de functie Fout-URL inschakelen

  • Stap 2: de fouthulpklassen maken

  • Stap 3: een JSON-Encoded foutbericht verwerken

  • Stap 4: Anonieme toegang tot de foutpagina configureren

  • Stap 5: Uw werk testen

Stap 1: de functie Fout-URL inschakelen

De functie Fout-URL voor uw relying party inschakelen

  1. Ga naar de Microsoft Azure-beheerportal (https://manage.WindowsAzure.com), meld u aan en klik vervolgens op Active Directory. (Tip voor probleemoplossing: Item 'Active Directory' ontbreekt of is niet beschikbaar)

  2. Als u een Access Control naamruimte wilt beheren, selecteert u de naamruimte en klikt u op Beheren. (Of klik op Access Control Naamruimten, selecteer de naamruimte en klik vervolgens op Beheren.)

  3. Klik op Relying Party-toepassingen en selecteer een relying party-toepassing.

  4. Voer op de pagina Relying Party-toepassing bewerken de URL van de foutpagina in het veld Fout-URL in.

    ACS leidt de gebruiker om naar deze pagina wanneer aanmeldingsfouten optreden. Acs verzendt ook JSON-URL-gecodeerde parameters naar deze pagina met de foutdetails.

Stap 2: Fouthulpklassen maken

Met deze stap maakt u fouthulpklassen die deserialiseren van de JSON-gecodeerde foutberichten.

Fouthelperklassen maken

  1. Voeg een klassebestand toe aan uw webtoepassing en geef het een naam, zoals Error.cs.

  2. Implementeer de foutklasse als volgt.

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

    Voeg nog een klassebestand toe en geef het een naam, zoals ErrorDetails.cs.

  3. Implementeer de klasse ErrorDetails als volgt.

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

Deze klassen worden in de volgende stap gebruikt bij het verwerken van foutberichten van ACS.

Stap 3: een JSON-Encoded foutbericht verwerken

In deze stap ziet u hoe u met JSON gecodeerde foutberichten verwerkt die door ACS worden gegenereerd.

Een JSON-gecodeerd foutbericht verwerken dat is gegenereerd door ACS

  1. Voeg een ASPX-webpagina toe aan uw ASP.NET toepassing en geef deze een naam, zoals ErrorPage.aspx.

  2. Voeg de volgende labelsbesturingselementen toe aan de ASP.NET markeringen.

    <asp:Label ID="lblIdntityProvider" runat="server"></asp:Label> 
    <asp:Label ID="lblErrorMessage" runat="server"></asp:Label> 
    
  3. Schakel over naar het bestand code-behind van de pagina, ErrorPge.aspx.cs.

  4. Voeg de volgende declaratie bovenaan toe.

    using System.Web.Script.Serialization;
    
  5. Voeg de volgende code toe aan de methode Page_Load .

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

    Met deze code worden JSON-gecodeerde foutberichten van ACS verwerkt.

Stap 4: Anonieme toegang tot de foutpagina configureren

Met deze stap configureert u anonieme toegang tot het bestand ErrorPage.aspx. Als de pagina is beveiligd en autorisatie vereist, resulteert een oneindige omleidingslusresultaten. Als dit gebeurt wanneer ACS probeert toegang te krijgen tot de pagina, verzendt ACS een JSON-gecodeerde fout.

Notitie

Omdat de foutpagina anoniem kan worden geopend en mogelijk code bevat die HTML-code weergeeft en/of gegevens naar uw database schrijft, moet u ervoor zorgen dat u scripts op meerdere sites en SQL injectieaanvallen voorkomt. In de volgende resources wordt dit uitgebreider beschreven:

Anonieme toegang tot de foutpagina configureren

  • Open de web.config in uw toepassing en voeg de volgende vermelding toe.

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

    Dit zorgt ervoor dat toegang tot uw pagina geen oneindige omleidingslus veroorzaakt.

Stap 5: Uw werk testen

Met deze stap wordt de configuratie en implementatie van de fout-URL getest.

De functie Fout-URL voor uw relying party inschakelen

  1. Ga naar de Microsoft Azure-beheerportal (https://manage.WindowsAzure.com), meld u aan en klik vervolgens op Active Directory. (Tip voor probleemoplossing: Item 'Active Directory' ontbreekt of is niet beschikbaar)

  2. Als u een Access Control naamruimte wilt beheren, selecteert u de naamruimte en klikt u op Beheren. (Of klik op Access Control Naamruimten, selecteer de naamruimte en klik vervolgens op Beheren.)

  3. Klik op Regelgroepen en klik vervolgens op een regelgroep die is gekoppeld aan de relying party-toepassing.

  4. Waarschuwing

    De volgende stap kan niet ongedaan worden gemaakt. Als u echter gegenereerde regels verwijdert, kunnen ze eenvoudig opnieuw worden gegenereerd.

  5. Selecteer op de pagina Regelgroep bewerken alle regels in de sectie Regels en klik vervolgens op Geselecteerde regels verwijderen.

  6. Klik op Opslaan.

  7. Ga terug naar uw website en navigeer naar een van de pagina's met behulp van uw browser.

  8. U moet worden omgeleid naar uw id-provider voor verificatie( Windows Live ID (Microsoft-account), Google, Facebook, Yahoo!, of — wat is geconfigureerd voor uw relying party als id-provider.

  9. Na een geslaagde verificatie moet u worden omgeleid naar ACS, wat een fout moet genereren omdat er geen regels zijn gedefinieerd.

  10. Deze fout moet worden weergegeven op de foutpagina die u in stap 2 hebt gemaakt: fouthulpklassen maken en ziet er ongeveer als volgt uit:

    URI:WindowsLiveID-foutcode ACS50000: er is een fout opgetreden bij het uitgeven van een token.

Een andere manier om dit te testen, is om toestemming van de gebruiker te weigeren. Dit wordt weergegeven wanneer u zich aanmeldt met Facebook of Google.