Dela via


Anvisningar: Använda en fel-URL för anpassad felhantering

Uppdaterad: 19 juni 2015

Gäller för: Azure

Gäller för

  • Microsoft Azure Active Directory Access Control (kallas även Access Control Service eller ACS)

Sammanfattning

Det här avsnittet beskriver hur du använder funktionen Fel-URL för att implementera anpassad hantering av inloggningsfel i ett förlitande part-program. Med en fel-URL kan du skicka fel som ACS genererar tillbaka till det förlitande partprogrammet så att programmet kan logga och svara på fel. Till exempel kan ASP.NET webbplatser använda funktionen Fel-URL för att visa felmeddelanden för slutanvändare som är märkta med samma utseende och känsla som webbplatsen.

Innehåll

  • Mål

  • Översikt

  • Sammanfattning av steg

  • Steg 1 – Aktivera funktionen fel-URL

  • Steg 2 – Skapa felhjälpklasserna

  • Steg 3 – Bearbeta ett JSON-Encoded felmeddelande

  • Steg 4 – Konfigurera anonym åtkomst till felsidan

  • Steg 5 – Testa ditt arbete

Mål

  • Identifiera den konfiguration som krävs för att använda funktionen Fel-URL.

  • Identifiera den hjälpkod som krävs för att bearbeta felmeddelanden från ACS.

  • Identifiera och felsöka potentiella fallgropar.

Översikt

En fel-URL anger den webbadress som ACS omdirigerar användare till om ett fel inträffar under inloggningsprocessen. Målet för fel-URL:en är vanligtvis en anpassad felsida som värdhanteras av det förlitande partprogrammet. Som en del av omdirigeringen returnerar ACS information om felet till det förlitande partprogrammet som en JSON-kodad HTTP URL-parameter. Du kan inkludera JSON-kodad felinformation på den anpassade felsidan och/eller visa statisk hjälptext. Följande är ett exempel på ett JSON-kodat felmeddelande.

{"context":null,"httpReturnCode":401,"identityProvider":"Google","timeStamp":"2010-12-17 21:01:36Z","traceId":"16bba464-03b9-48c6-a248-9d16747b1515","errors":[{"errorCode":"ACS30000","errorMessage":"Det uppstod ett fel när ett OpenID-inloggningssvar bearbetades."},{"errorCode":"ACS50019","errorMessage":"Inloggningen avbröts av användaren."}]}

Sammanfattning av steg

Använd följande process för att hantera ACS-felmeddelanden:

  • Steg 1 – Aktivera funktionen fel-URL

  • Steg 2 – Skapa felhjälpklasserna

  • Steg 3 – Bearbeta ett JSON-Encoded felmeddelande

  • Steg 4 – Konfigurera anonym åtkomst till felsidan

  • Steg 5 – Testa ditt arbete

Steg 1 – Aktivera funktionen fel-URL

Så här aktiverar du funktionen Fel-URL för den förlitande parten

  1. Gå till Microsoft Azure Management Portal (https://manage.WindowsAzure.com), logga in och klicka sedan på Active Directory. (Felsökningstips: "Active Directory"-objektet saknas eller är inte tillgängligt)

  2. Om du vill hantera ett Access Control namnområde väljer du namnområdet och klickar sedan på Hantera. (Eller klicka på Access Control namnområden, välj namnområdet och klicka sedan på Hantera.)

  3. Klicka på Program från förlitande part och välj ett program för förlitande part.

  4. På sidan Redigera förlitande part-program anger du felsidans URL i fältet Fel-URL .

    ACS omdirigerar användaren till den här sidan när inloggningsfel uppstår. Dessutom skickar ACS JSON URL-kodade parametrar till den här sidan som innehåller felinformationen.

Steg 2 – Skapa felhjälpklasser

Det här steget skapar felhjälpklasser som deserialiserar JSON-kodade felmeddelanden.

Så här skapar du felhjälpklasser

  1. Lägg till en klassfil i webbappen och ge den ett namn, till exempel Error.cs.

  2. Implementera klassen Error på följande sätt.

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

    Lägg till ytterligare en klassfil och ge den ett namn, till exempel ErrorDetails.cs.

  3. Implementera klassen ErrorDetails på följande sätt.

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

Dessa klasser används i nästa steg när du bearbetar felmeddelanden från ACS.

Steg 3 – Bearbeta ett JSON-Encoded felmeddelande

Det här steget visar hur du bearbetar JSON-kodade felmeddelanden som ACS genererar.

Bearbeta ett JSON-kodat felmeddelande som genereras av ACS

  1. Lägg till en ASPX-webbsida i ditt ASP.NET-program och ge den ett namn, till exempel ErrorPage.aspx.

  2. Lägg till följande etiketter i ASP.NET-koden.

    <asp:Label ID="lblIdntityProvider" runat="server"></asp:Label> 
    <asp:Label ID="lblErrorMessage" runat="server"></asp:Label> 
    
  3. Växla till sidans bakomliggande fil, ErrorPge.aspx.cs.

  4. Lägg till följande deklaration överst.

    using System.Web.Script.Serialization;
    
  5. Lägg till följande kod i metoden 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());
    
    

    Den här koden bearbetar JSON-kodade felmeddelanden från ACS.

Steg 4 – Konfigurera anonym åtkomst till felsidan

Det här steget konfigurerar anonym åtkomst till filen ErrorPage.aspx. Om sidan är skyddad och kräver auktorisering resulterar en oändlig omdirigeringsloop. Om detta inträffar när ACS försöker komma åt sidan skickar ACS ett JSON-kodat fel.

Anteckning

Eftersom felsidan kan nås anonymt och den kan innehålla kod som returnerar HTML och/eller skriver data till databasen, bör du se till att du förhindrar skriptkörning mellan webbplatser och SQL inmatningsattacker. Följande resurser beskriver detta mer detaljerat:

Så här konfigurerar du anonym åtkomst till felsidan

  • Öppna web.config i ditt program och lägg till följande post.

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

    Detta säkerställer att åtkomsten till sidan inte orsakar en oändlig omdirigeringsloop.

Steg 5 – Testa ditt arbete

Det här steget testar konfigurationen och implementeringen av fel-URL:en.

Så här aktiverar du funktionen Fel-URL för den förlitande parten

  1. Gå till Microsoft Azure Management Portal (https://manage.WindowsAzure.com), logga in och klicka sedan på Active Directory. (Felsökningstips: "Active Directory"-objektet saknas eller är inte tillgängligt)

  2. Om du vill hantera ett Access Control namnområde väljer du namnområdet och klickar sedan på Hantera. (Eller klicka på Access Control namnområden, välj namnområdet och klicka sedan på Hantera.)

  3. Klicka på Regelgrupper och sedan på en regelgrupp som är associerad med det förlitande partprogrammet.

  4. Varning

    Det går inte att ångra följande steg. Men om du tar bort genererade regler kan de enkelt genereras igen.

  5. På sidan Redigera regelgrupp markerar du alla regler i avsnittet Regler och klickar sedan på Ta bort markerade regler.

  6. Klicka på Spara.

  7. Gå tillbaka till webbplatsen och gå till en av sidorna med hjälp av webbläsaren.

  8. Du bör omdirigeras till din identitetsprovider för autentisering – Windows Live ID (Microsoft-konto), Google, Facebook, Yahoo! eller – vad som än är konfigurerat för den förlitande parten som identitetsprovider.

  9. Efter lyckad autentisering bör du omdirigeras tillbaka till ACS, vilket bör generera ett fel eftersom inga regler har definierats.

  10. Det här felet bör visas på felsidan som du skapade i Steg 2 – Skapa felhjälpklasser och kommer att likna följande:

    uri:WindowsLiveID Felkod ACS50000: Ett fel uppstod när en token utfärdades.

Ett annat sätt att testa detta är att neka användarens medgivande. Detta visas när du loggar in med Facebook eller Google.