Procedura: Usare un URL di errore per la gestione degli errori personalizzati
Aggiornamento: 19 giugno 2015
Si applica a: Azure
Si applica a
- Microsoft Azure Active Directory Access Control (anche noto come Servizio di controllo di accesso o ACS)
Riepilogo
Questo argomento illustra come usare la funzionalità URL errori per implementare la gestione personalizzata degli errori di accesso in un'applicazione relying party. Un URL di errore consente di inviare errori generati da ACS all'applicazione relying party in modo che l'applicazione possa registrare e rispondere agli errori. Ad esempio, i siti Web ASP.NET possono usare la funzionalità URL errori per presentare agli utenti finali messaggi di errore personalizzati con lo stesso aspetto del sito Web.
Contenuto
Obiettivi
Panoramica
Riepilogo dei passaggi
Passaggio 1 – Abilitare la funzionalità URL errori
Passaggio 2 – Creare classi helper degli errori
Passaggio 3 – Elaborare un messaggio di errore con codifica JSON
Passaggio 4 – Configurare l'accesso anonimo alla pagina di errore
Passaggio 5: Verificare il lavoro eseguito
Obiettivi
Identificare la configurazione necessaria per l'uso della funzionalità URL errori.
Identificare il codice helper necessario per elaborare i messaggi di errore da ACS.
Identificare e risolvere i potenziali errori.
Panoramica
Un URL di errore specifica l'indirizzo Web a cui ACS reindirizza gli utenti se si verifica un errore durante il processo di accesso. La destinazione dell'URL errori è in genere una pagina di errore personalizzata ospitata dall'applicazione relying party. Nell'ambito del reindirizzamento, ACS restituisce informazioni sull'errore dell'applicazione relying party come parametro URL HTTP con codifica JSON. La pagina di errore personalizzata può essere impostata in modo da includere le informazioni sull'errore con codifica JSON e/o visualizzare un testo statico della Guida. Di seguito è riportato un esempio di messaggio di errore con codifica JSON.
{"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."}]}
Riepilogo dei passaggi
Usare il processo seguente per gestire i messaggi di errore ACS:
Passaggio 1 – Abilitare la funzionalità URL errori
Passaggio 2 – Creare classi helper degli errori
Passaggio 3 – Elaborare un messaggio di errore con codifica JSON
Passaggio 4 – Configurare l'accesso anonimo alla pagina di errore
Passaggio 5: Verificare il lavoro eseguito
Passaggio 1 – Abilitare la funzionalità URL errori
Per abilitare la funzionalità URL errori per la relying party
Passare al portale di gestione Microsoft Azure (https://manage.WindowsAzure.com), accedere e quindi fare clic su Active Directory. (Suggerimento per la risoluzione dei problemi: l'elemento "Active Directory" non è disponibile o meno)
Per gestire uno spazio dei nomi di Controllo di accesso, selezionare lo spazio dei nomi, quindi fare clic su Gestisci. Altrimenti, fare clic su Spazi dei nomi controllo di accesso, selezionare lo spazio dei nomi, quindi fare clic su Gestisci.
Fare clic su Relying party applications e selezionare un'applicazione relying party.
Nella pagina Edit Relying Party Application immettere l'URL della pagina di errore nel campo Error URL.
ACS reindirizza l'utente a questa pagina quando si verificano errori di accesso. Inoltre, ACS invia parametri con codifica URL JSON a questa pagina che includono i dettagli dell'errore.
Passaggio 2 – Creare classi helper degli errori
Questo passaggio consente di creare classi helper di errore che deserializzano i messaggi di errore con codifica JSON.
Per creare classi helper degli errori
Aggiungere un file di classe a un'applicazione Web e assegnargli un nome, ad esempio Error.cs.
Implementare la classe Error come illustrato di seguito.
public class Error { public string errorCode { get; set; } public string errorMessage { get; set; } }
Aggiungere un altro file di classe e assegnargli un nome, ad esempio ErrorDetails.cs.
Implementare la classe ErrorDetails come illustrato di seguito.
public class ErrorDetails { public string context { get; set; } public int httpReturnCode { get; set; } public string identityProvider { get; set; } public Error[] errors { get; set; } }
Queste classi verranno usate nel passaggio successivo durante l'elaborazione dei messaggi di errore da ACS.
Passaggio 3 – Elaborare un messaggio di errore con codifica JSON
Questo passaggio illustra come elaborare i messaggi di errore con codifica JSON generati da ACS.
Per elaborare un messaggio di errore con codifica JSON generato da ACS
Aggiungere una pagina web ASPX all'applicazione ASP.NET e assegnarle un nome, ad esempio ErrorPage.aspx.
Aggiungere i controlli etichetta seguenti al markup ASP.NET.
<asp:Label ID="lblIdntityProvider" runat="server"></asp:Label> <asp:Label ID="lblErrorMessage" runat="server"></asp:Label>
Passare al file code-behind della pagina, ovvero ErrorPge.aspx.cs.
Aggiungere la dichiarazione seguente nella parte superiore.
using System.Web.Script.Serialization;
Aggiungere il codice seguente al metodo 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());
Questo codice elabora i messaggi di errore con codifica JSON da ACS.
Passaggio 4 – Configurare l'accesso anonimo alla pagina di errore
Questo passaggio consente di configurare l'accesso anonimo al file ErrorPage.aspx. Se la pagina è protetta e richiede l'autorizzazione, il risultato sarà un ciclo di reindirizzamento infinito. Se si verifica quando ACS tenta di accedere alla pagina, ACS invia un errore con codifica JSON.
Nota
Poiché la pagina è accessibile in modo anonimo e può includere codice che esegue l'eco dell'HTML o scrive dati nel database, è consigliabile impedire gli attacchi tramite script da altri siti e gli attacchi SQL injection. Questa situazione è descritta più in dettaglio nelle risorse seguenti:
-
Procedura: Impedire lo scripting tra siti in ASP.NET (https://go.microsoft.com/fwlink/?LinkID=178708).
-
Procedura: Proteggere da attacchi di inserimento in ASP.NET (https://go.microsoft.com/fwlink/?LinkID=157572).
-
Procedura: Proteggere da SQL inserimento in ASP.NEThttps://go.microsoft.com/fwlink/?LinkID=212978.
Per configurare l'accesso anonimo alla pagina di errore
Aprire il file web.config nell'applicazione e aggiungere la voce seguente.
<location path="ErrorPage.aspx"> <system.web> <authorization> <allow users="*" /> </authorization> </system.web> </location>
Questo garantisce che l'accesso alla pagina non provochi un ciclo di reindirizzamento infinito.
Passaggio 5: Verificare il lavoro eseguito
Questo passaggio consente di verificare la configurazione e l'implementazione dell'URL errori.
Per abilitare la funzionalità URL errori per la relying party
Passare al portale di gestione Microsoft Azure (https://manage.WindowsAzure.com), accedere e quindi fare clic su Active Directory. (Suggerimento per la risoluzione dei problemi: l'elemento "Active Directory" non è disponibile o meno)
Per gestire uno spazio dei nomi di Controllo di accesso, selezionare lo spazio dei nomi, quindi fare clic su Gestisci. Altrimenti, fare clic su Spazi dei nomi controllo di accesso, selezionare lo spazio dei nomi, quindi fare clic su Gestisci.
Fare clic su Rule Groups e quindi fare clic su un gruppo di regole associato all'applicazione relying party.
-
Avviso
Il passaggio seguente non può essere annullato. Se però si eliminano le regole generate, è possibile rigenerarle facilmente.
Nella pagina Edit Rule Group selezionare tutte le regole nella sezione Rules e quindi fare clic su Delete Selected Rules.
Fare clic su Salva.
Tornare al sito Web e accedere a una delle pagine usando il browser.
Si dovrebbe essere reindirizzati al provider di identità per l'autenticazione, Windows Live ID (account Microsoft), Google, Facebook, Yahoo!o , qualsiasi cosa sia configurata per la propria relying party come provider di identità.
Dopo aver completato l'autenticazione, è necessario tornare a ACS, che deve generare un errore perché non sono definite regole.
Questo errore deve essere visualizzato nella pagina di errore creata nel passaggio 2 - Creare classi helper di errore e sarà simile al seguente:
Codice errore uri:WindowsLiveID ACS50000: si è verificato un errore che emette un token.
Un altro modo eseguire questa verifica consiste nel negare il consenso dell'utente. L'opzione viene presentata quando si accede usando Facebook o Google.