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
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)
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.)
Klicka på Program från förlitande part och välj ett program för förlitande part.
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
Lägg till en klassfil i webbappen och ge den ett namn, till exempel Error.cs.
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.
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
Lägg till en ASPX-webbsida i ditt ASP.NET-program och ge den ett namn, till exempel ErrorPage.aspx.
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>
Växla till sidans bakomliggande fil, ErrorPge.aspx.cs.
Lägg till följande deklaration överst.
using System.Web.Script.Serialization;
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:
- Anvisningar: Förhindra skriptkörning mellan webbplatser i ASP.NET (https://go.microsoft.com/fwlink/?LinkID=178708).
- Anvisningar: Skydda mot inmatningsattacker i ASP.NET (https://go.microsoft.com/fwlink/?LinkID=157572).
- Anvisningar: Skydda mot SQL injektion i ASP.NEThttps://go.microsoft.com/fwlink/?LinkID=212978.
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
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)
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.)
Klicka på Regelgrupper och sedan på en regelgrupp som är associerad med det förlitande partprogrammet.
-
Varning
Det går inte att ångra följande steg. Men om du tar bort genererade regler kan de enkelt genereras igen.
På sidan Redigera regelgrupp markerar du alla regler i avsnittet Regler och klickar sedan på Ta bort markerade regler.
Klicka på Spara.
Gå tillbaka till webbplatsen och gå till en av sidorna med hjälp av webbläsaren.
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.
Efter lyckad autentisering bör du omdirigeras tillbaka till ACS, vilket bör generera ett fel eftersom inga regler har definierats.
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.