Como usar uma URL de erro para tratamento de erros personalizados

Atualizado em: 19 de junho de 2015

Aplica-se ao Azure

Aplica-se A

  • Access Control do Active Directory do Microsoft Azure (também conhecido como Access Control Service ou ACS)

Resumo

Este tópico explica como usar o recurso URL de Erro para implementar um tratamento personalizado de erros de logon em um aplicativo de terceira parte confiável. Uma URL de Erro permite que você envie erros que o ACS gera de volta para o aplicativo de terceira parte confiável para que o aplicativo possa fazer logon e responder a erros. Por exemplo, sites da Web ASP.NET podem usar o recurso URL de Erro para apresentar mensagens de erro aos usuários finais que tenham a mesma aparência do site.

Sumário

  • Objetivos

  • Visão geral

  • Resumo das etapas

  • Etapa 1 – Habilitar o recurso URL de Erro

  • Etapa 2 – Criar as classes auxiliares de erro

  • Etapa 3 – Processar uma mensagem de erro codificada por JSON

  • Etapa 4 – Configurar acesso anônimo à página de erro

  • Etapa 5 – Testar seu trabalho

Objetivos

  • Identifica a configuração necessária para usar o recurso URL de Erro.

  • Identifique o código auxiliar necessário para processar mensagens de erro do ACS.

  • Identifique e solucione possíveis armadilhas.

Visão geral

Uma URL de Erro especifica o endereço Web para o qual o ACS redireciona os usuários se ocorrer um erro durante o processo de logon. O destino da URL de Erro normalmente é uma página de erro personalizada que é hospedada por um aplicativo da terceira parte confiável. Como parte do redirecionamento, o ACS retorna informações sobre o erro para o aplicativo de terceira parte confiável como um parâmetro de URL HTTP codificado em JSON. Você pode incluir as informações de erro codificadas em JSON na página de erro personalizada e/ou exibir um texto de ajuda estático. A seguir está um exemplo de uma mensagem de erro codificada em JSON.

{"context":null,"httpReturnCode":401,"identityProvider":"Google","timeStamp":"2010-12-17 21:01:36Z","traceId":"16bba464-03b9-48c6-a248-9d16747b1515","errors":[{"errorCode":"ACS30000","errorMessage":"Ocorreu um erro ao processar uma resposta de entrada de OpenID."},{"errorCode":"ACS50019","errorMessage":"Uma entrada foi cancelada pelo usuário."}]}

Resumo das etapas

Use o processo a seguir para lidar com mensagens de erro do ACS:

  • Etapa 1 – Habilitar o recurso URL de Erro

  • Etapa 2 – Criar as classes auxiliares de erro

  • Etapa 3 – Processar uma mensagem de erro codificada por JSON

  • Etapa 4 – Configurar acesso anônimo à página de erro

  • Etapa 5 – Testar seu trabalho

Etapa 1 – Habilitar o recurso URL de Erro

Para habilitar o recurso de URL de Erro para a terceira parte confiável

  1. Vá para o Portal de Gerenciamento do Microsoft Azure (https://manage.WindowsAzure.com), entre e clique em Active Directory. (Dica de solução de problemas: o item "Active Directory" está ausente ou não está disponível)

  2. Para gerenciar um namespace do Access Control, selecione o namespace e clique em Gerenciar. (Or, clique em Namespaces do Access Control, selecione o namespace e clique em Gerenciar.)

  3. Clique em Aplicativos de terceira parte confiável e selecione um aplicativo de terceira parte confiável.

  4. Na página Editar Aplicativo de Terceiros Parte Confiável, insira a URL da página de erro no campo URL de Erro.

    O ACS redireciona o usuário para esta página quando ocorrem erros de logon. Além disso, o ACS envia parâmetros codificados em URL JSON para esta página que incluem os detalhes do erro.

Etapa 2 – Criar classes auxiliares de erro

Esta etapa cria classes auxiliares de erro que desserializam as mensagens de erro codificadas em JSON.

Para criar classes auxiliares de erro

  1. Adicionar um arquivo de classe ao seu aplicativo da Web e dê a ele um nome, como Error.cs.

  2. Implemente a classe Error como a seguir.

    public class Error
    {
        public string errorCode { get; set; }
        public string errorMessage { get; set; }
    }
    

    Adicione outro arquivo de classe e dê-lhe um nome, como ErrorDetails.cs.

  3. Implemente a classe ErrorDetails como a seguir.

    public class ErrorDetails
    {
        public string context { get; set; }
        public int httpReturnCode { get; set; }
        public string identityProvider { get; set; }
        public Error[] errors { get; set; }
    }
    

Essas classes serão usadas na próxima etapa ao processar mensagens de erro do ACS.

Etapa 3 – Processar uma mensagem de erro codificada por JSON

Esta etapa mostra como processar mensagens de erro codificadas em JSON geradas pelo ACS.

Para processar uma mensagem de erro codificada em JSON gerada pelo ACS

  1. Adicione uma página ASPX ao seu aplicativo ASP.NET e dê a ele um nome, como ErrorPage.aspx.

  2. Adicione os seguintes controles de rótulos para a marcação do ASP.NET.

    <asp:Label ID="lblIdntityProvider" runat="server"></asp:Label> 
    <asp:Label ID="lblErrorMessage" runat="server"></asp:Label> 
    
  3. Alterne para o arquivo de code-behind da página, ErrorPge.aspx.cs.

  4. Adicione a declaração a seguir ao topo.

    using System.Web.Script.Serialization;
    
  5. Adicione o seguinte código ao método 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());
    
    

    Esse código processa mensagens de erro codificadas em JSON do ACS.

Etapa 4 – Configurar acesso anônimo à página de erro

Esta etapa configura o acesso anônimo ao arquivo ErrorPage.aspx. Se a página estiver protegida e requer autorização, ocorrerá um loop de redirecionamento infinito. Se isso ocorrer quando o ACS tentar acessar a página, o ACS enviará um erro codificado em JSON.

Observação

Como a página de erro pode ser acessada anonimamente e isso poderá incluir um código que retorna um HTML ou grava dados em um banco de dados, devem ser tomadas medidas para impedir a criação de scripts entre sites e ataques de injeção de SQL. Os recursos a seguir descrevem isso mais detalhadamente:

Para configurar o acesso anônimo à página de erro

  • Abra o web.config em seu aplicativo e adicione a seguinte entrada.

    <location path="ErrorPage.aspx">
      <system.web>
        <authorization>
          <allow users="*" />
        </authorization>
      </system.web>
    </location>
    

    Isso garante que o acesso à sua página não cause um loop de redirecionamento infinito.

Etapa 5 – Testar seu trabalho

Esta etapa testa sua configuração e implementação de URL de Erro.

Para habilitar o recurso de URL de Erro para a terceira parte confiável

  1. Vá para o Portal de Gerenciamento do Microsoft Azure (https://manage.WindowsAzure.com), entre e clique em Active Directory. (Dica de solução de problemas: o item "Active Directory" está ausente ou não está disponível)

  2. Para gerenciar um namespace do Access Control, selecione o namespace e clique em Gerenciar. (Or, clique em Namespaces do Access Control, selecione o namespace e clique em Gerenciar.)

  3. Clique em Grupos de Regras e clique em um grupo de regras que está associado com o aplicativo de terceira parte confiável.

  4. Aviso

    A etapa a seguir não pode ser desfeita. No entanto, se você estiver excluindo regras geradas, elas podem ser geradas novamente com facilidade.

  5. Na página Editar Grupo de Regras, marque todas as regras na seção Regras e clique em Excluir Regras Selecionadas.

  6. Clique em Salvar.

  7. Volte ao seu site e navegue até uma das páginas usando seu navegador.

  8. Você deve ser redirecionado para seu provedor de identidade para autenticação — Windows ID dinâmica (conta da Microsoft), Google, Facebook, Yahoo!ou — o que estiver configurado para sua terceira parte confiável como o provedor de identidade.

  9. Após a autenticação bem-sucedida, você deve ser redirecionado de volta para o ACS, o que deve gerar um erro, já que nenhuma regra é definida.

  10. Esse erro deve ser exibido na página de erro que você criou na Etapa 2 – Criar Classes Auxiliares de Erro e será semelhante ao seguinte:

    uri:WindowsLiveID Error Code ACS500000: houve um erro ao emitir um token.

Outra maneira de testar isso é negar consentimento do usuário. Isso é apresentado quando você faz logon usando o Facebook ou Google.