Share via


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

  1. 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)

  2. 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.

  3. Fare clic su Relying party applications e selezionare un'applicazione relying party.

  4. 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

  1. Aggiungere un file di classe a un'applicazione Web e assegnargli un nome, ad esempio Error.cs.

  2. 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.

  3. 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

  1. Aggiungere una pagina web ASPX all'applicazione ASP.NET e assegnarle un nome, ad esempio ErrorPage.aspx.

  2. 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> 
    
  3. Passare al file code-behind della pagina, ovvero ErrorPge.aspx.cs.

  4. Aggiungere la dichiarazione seguente nella parte superiore.

    using System.Web.Script.Serialization;
    
  5. 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:

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

  1. 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)

  2. 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.

  3. Fare clic su Rule Groups e quindi fare clic su un gruppo di regole associato all'applicazione relying party.

  4. Avviso

    Il passaggio seguente non può essere annullato. Se però si eliminano le regole generate, è possibile rigenerarle facilmente.

  5. Nella pagina Edit Rule Group selezionare tutte le regole nella sezione Rules e quindi fare clic su Delete Selected Rules.

  6. Fare clic su Salva.

  7. Tornare al sito Web e accedere a una delle pagine usando il browser.

  8. 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à.

  9. Dopo aver completato l'autenticazione, è necessario tornare a ACS, che deve generare un errore perché non sono definite regole.

  10. 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.