Esporta (0) Stampa
Espandi tutto
Espandi Riduci a icona

Procedura: usare un URL di errore per la gestione personalizzata degli errori

Pubblicato: aprile 2011

Aggiornamento: marzo 2015

Si applica a: Azure

  • Microsoft Azure Active Directory Access Control (anche noto come Servizio Access Controll o ACS)

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 errori consente di reindirizzare gli errori generati da ACS verso l'applicazione relying party, in modo che questa possa registrarli e rispondervi. 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.

  • Obiettivi

  • Informazioni generali

  • 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

  • Identificare la configurazione necessaria per l'uso della funzionalità URL errori.

  • Identificare il codice helper necessario per elaborare i messaggi di errore di ACS.

  • Identificare e risolvere i potenziali errori.

Un URL errori specifica l'indirizzo Web verso cui ACS reindirizza gli utenti se si verifica un errore durante la procedura di accesso. La destinazione dell'URL errori è in genere una pagina di errore personalizzata ospitata dall'applicazione relying party. Nell'ambito del reindirizzamento, ACS fornisce all'applicazione relying party informazioni dettagliate sull'errore 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."}]}

Usare la procedura seguente per gestire i messaggi di errore di 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

  1. Passare al portale di gestione di Microsoft Azure (https://manage.WindowsAzure.com), eseguire l'accesso, quindi fare clic su Active Directory. (Suggerimento per la risoluzione dei problemi: elemento "Active Directory" mancante o non disponibile)

  2. Per gestire uno spazio dei nomi di Access Control, selezionare lo spazio dei nomi, quindi fare clic su Gestisci. Altrimenti, fare clic su Spazi dei nomi di Access Control, 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 alla pagina parametri URL con codifica JSON che includono i dettagli dell'errore.

Questo passaggio consente di creare classi helper di errore che deserializzano i messaggi di errore con codifica JSON.

  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 di ACS.

Questo passaggio illustra come elaborare i messaggi di errore con codifica JSON generati 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 consente di elaborare i messaggi di errore con codifica JSON provenienti da ACS.

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. In tal caso, quando ACS tenta di accedere alla pagina, ACS invia un errore con codifica JSON.

noteNota
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:

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

Questo passaggio consente di verificare la configurazione e l'implementazione dell'URL errori.

  1. Passare al portale di gestione di Microsoft Azure (https://manage.WindowsAzure.com), eseguire l'accesso, quindi fare clic su Active Directory. (Suggerimento per la risoluzione dei problemi: elemento "Active Directory" mancante o non disponibile)

  2. Per gestire uno spazio dei nomi di Access Control, selezionare lo spazio dei nomi, quindi fare clic su Gestisci. Altrimenti, fare clic su Spazi dei nomi di Access Control, 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. WarningAvviso
    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 Save.

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

  8. Si dovrebbe essere reindirizzati al provider di identità configurato per l'autenticazione, Windows Live ID (account Microsoft), Google, Facebook, Yahoo!, o qualunque provider configurato per la relying party.

  9. Se l'autenticazione viene eseguita correttamente, si viene reindirizzati ad ACS, che dovrebbe generare un errore perché non vi sono regole definite.

  10. Questo errore dovrebbe essere visualizzato nella pagina di errore creata in Passaggio 2 – Creare classi helper degli errori e sarà simile al seguente:

    uri:WindowsLiveID Codice errore ACS50000: Errore durante il rilascio di 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.

Aggiunte alla community

AGGIUNGI
Microsoft sta conducendo un sondaggio in linea per comprendere l'opinione degli utenti in merito al sito Web di MSDN. Se si sceglie di partecipare, quando si lascia il sito Web di MSDN verrà visualizzato il sondaggio in linea.

Si desidera partecipare?
Mostra:
© 2015 Microsoft