Postupy: Použití adresy URL chyby pro vlastní zpracování chyb
Aktualizováno: 19. června 2015
Platí pro: Azure
Platí pro
- Microsoft Azure Active Directory Access Control (označované také jako služba Access Control nebo služba ACS)
Souhrn
Toto téma vysvětluje, jak pomocí funkce Adresa URL chyby implementovat vlastní zpracování chyb přihlášení v aplikaci předávající strany. Adresa URL chyby umožňuje odesílat chyby, které služba ACS generuje zpět do aplikace předávající strany, aby se aplikace mohl protokolovat a reagovat na chyby. Například ASP.NET weby můžou pomocí funkce Adresa URL chyby prezentovat chybové zprávy koncovým uživatelům, kteří jsou označeni stejným vzhledem a chováním jako web.
Obsah
Cíle
Přehled
Přehled kroků
Krok 1 – Povolení funkce adresy URL chyby
Krok 2 – Vytvoření pomocných tříd chyb
Krok 3 – Zpracování chybové zprávy JSON-Encoded
Krok 4 – Konfigurace anonymního přístupu na chybovou stránku
Krok 5 – Testování práce
Cíle
Identifikujte požadovanou konfiguraci pro použití funkce Adresa URL chyby.
Identifikujte pomocný kód potřebný ke zpracování chybových zpráv ze služby ACS.
Identifikujte a vyřešte potenciální úskalí.
Přehled
Adresa URL chyby určuje webovou adresu, na kterou služba ACS přesměruje uživatele, pokud během procesu přihlášení dojde k chybě. Cíl adresy URL chyby je obvykle vlastní chybová stránka hostovaná aplikací předávající strany. V rámci přesměrování služba ACS vrací informace o chybě aplikace předávající strany jako parametr adresy URL kódovaný kódem JSON. Informace o chybách kódované kódem JSON můžete zahrnout na vlastní chybovou stránku nebo zobrazit statický text nápovědy. Následuje ukázka chybové zprávy s kódováním JSON.
{"context":null,"httpReturnCode":401,"identityProvider":"Google","timeStamp":"2010-12-17 21:01:36Z","traceId":"16bba464-03b9-48c6-a248--248-9d16747b15","errors":[{"errorCode":"ACS30000","errorMessage":"Došlo k chybě při zpracování odpovědi přihlášení openID."},{"errorCode":"ACS50019","errorMessage":"Přihlášení bylo zrušeno uživatelem."}]}
Přehled kroků
Zpracování chybových zpráv služby ACS pomocí následujícího procesu:
Krok 1 – Povolení funkce adresy URL chyby
Krok 2 – Vytvoření pomocných tříd chyb
Krok 3 – Zpracování chybové zprávy JSON-Encoded
Krok 4 – Konfigurace anonymního přístupu na chybovou stránku
Krok 5 – Testování práce
Krok 1 – Povolení funkce adresy URL chyby
Povolení funkce Adresa URL chyby pro předávající stranu
Přejděte na portál pro správu Microsoft Azure (https://manage.WindowsAzure.com), přihlaste se a klikněte na Active Directory. (Tip pro řešení potíží: Položka Active Directory chybí nebo není k dispozici)
Pokud chcete spravovat Access Control obor názvů, vyberte obor názvů a klikněte na Spravovat. (Nebo klikněte na Access Control Obory názvů, vyberte obor názvů a potom klikněte na Spravovat.)
Klikněte na aplikace předávající strany a vyberte aplikaci předávající strany.
Na stránce Upravit aplikaci předávající strany zadejte adresu URL chybové stránky do pole Adresa URL chyby .
Služba ACS přesměruje uživatele na tuto stránku, když dojde k chybám přihlášení. Služba ACS také odesílá parametry kódované adresou URL JSON na tuto stránku, která obsahuje podrobnosti o chybě.
Krok 2 – Vytvoření pomocných tříd chyb
Tento krok vytvoří pomocné třídy chyb, které deserializují chybové zprávy kódované json.
Vytvoření pomocnýchtřídch
Přidejte do webové aplikace soubor třídy a pojmenujte ho, například Error.cs.
Implementujte třídu Error následujícím způsobem.
public class Error { public string errorCode { get; set; } public string errorMessage { get; set; } }
Přidejte další soubor třídy a pojmenujte ho, například ErrorDetails.cs.
Implementujte třídu ErrorDetails následujícím způsobem.
public class ErrorDetails { public string context { get; set; } public int httpReturnCode { get; set; } public string identityProvider { get; set; } public Error[] errors { get; set; } }
Tyto třídy se použijí v dalším kroku při zpracování chybových zpráv ze služby ACS.
Krok 3 – Zpracování chybové zprávy JSON-Encoded
Tento krok ukazuje, jak zpracovat chybové zprávy kódované json, které ACS generuje.
Zpracování chybové zprávy s kódováním JSON vygenerované službou ACS
Přidejte do aplikace ASP.NET webovou stránku ASPX a pojmenujte ji, například ErrorPage.aspx.
Do značky ASP.NET přidejte následující ovládací prvky popisků.
<asp:Label ID="lblIdntityProvider" runat="server"></asp:Label> <asp:Label ID="lblErrorMessage" runat="server"></asp:Label>
Přepněte na soubor s kódem stránky ErrorPge.aspx.cs.
Do horní části přidejte následující deklaraci.
using System.Web.Script.Serialization;
Do metody Page_Load přidejte následující kód.
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());
Tento kód zpracovává chybové zprávy kódované json ze služby ACS.
Krok 4 – Konfigurace anonymního přístupu na chybovou stránku
Tento krok nakonfiguruje anonymní přístup k souboru ErrorPage.aspx. Pokud je stránka chráněná a vyžaduje autorizaci, bude výsledkem nekonečné smyčky přesměrování. Pokud k tomu dojde, když se služba ACS pokusí získat přístup k stránce, služba ACS odešle chybu kódovanou kódem JSON.
Poznámka
Vzhledem k tomu, že k chybové stránce je možné přistupovat anonymně a může obsahovat kód, který vrací zpět kód HTML nebo zapisuje data do databáze, měli byste se ujistit, že jste zabránili skriptování mezi weby a SQL útoky injektáží. Další podrobnosti najdete v následujících zdrojích informací:
-
Postupy: Zabránění skriptování mezi weby v ASP.NET (https://go.microsoft.com/fwlink/?LinkID=178708).
-
Postupy: Ochrana před útoky injektáží v ASP.NET (https://go.microsoft.com/fwlink/?LinkID=157572).
-
Postupy: Ochrana před injektáží SQL v ASP.NEThttps://go.microsoft.com/fwlink/?LinkID=212978.
Konfigurace anonymního přístupu na chybovou stránku
Otevřete web.config v aplikaci a přidejte následující položku.
<location path="ErrorPage.aspx"> <system.web> <authorization> <allow users="*" /> </authorization> </system.web> </location>
Tím zajistíte, že přístup k vaší stránce nezpůsobí neomezenou smyčku přesměrování.
Krok 5 – Testování práce
Tento krok otestuje konfiguraci a implementaci adresy URL chyby.
Povolení funkce Adresa URL chyby pro předávající stranu
Přejděte na portál pro správu Microsoft Azure (https://manage.WindowsAzure.com), přihlaste se a klikněte na Active Directory. (Tip pro řešení potíží: Položka Active Directory chybí nebo není k dispozici)
Pokud chcete spravovat Access Control obor názvů, vyberte obor názvů a klikněte na Spravovat. (Nebo klikněte na Access Control Obory názvů, vyberte obor názvů a potom klikněte na Spravovat.)
Klikněte na skupiny pravidel a potom klikněte na skupinu pravidel přidruženou k aplikaci předávající strany.
-
Upozornění
Následující krok nelze vrátit zpět. Pokud ale odstraňujete vygenerovaná pravidla, můžete je snadno vygenerovat.
Na stránce Upravit skupinu pravidel vyberte všechna pravidla v části Pravidla a potom klikněte na odstranit vybraná pravidla.
Klikněte na Uložit.
Vraťte se na svůj web a přejděte na jednu ze stránek pomocí prohlížeče.
Měli byste být přesměrováni na svého zprostředkovatele identity pro ověřování – Windows live ID (účet Microsoft), Google, Facebook, Yahoo!nebo – co je nakonfigurované pro předávající stranu jako zprostředkovatele identity.
Po úspěšném ověření byste měli být přesměrováni zpět na službu ACS, která by měla generovat chybu, protože nejsou definována žádná pravidla.
Tato chyba by se měla zobrazit na stránce s chybami, kterou jste vytvořili v kroku 2 – Vytvoření pomocných tříd chyb, a bude vypadat přibližně takto:
uri:Kód chyby WindowsLiveID ACS50000: Při vydávání tokenu došlo k chybě.
Dalším způsobem, jak to otestovat, je zamítnout souhlas uživatele. Zobrazí se, když se přihlásíte pomocí Facebooku nebo Googlu.