Coletar logs do Azure Active Directory B2C com o Application Insights

Antes de começar, use o seletor Escolher um tipo de política para escolher o tipo de política que você está configurando. O Azure Active Directory B2C oferece dois métodos para definir como os usuários interagem com seus aplicativos: por meio de fluxos dos usuários predefinidos ou de políticas personalizadas totalmente configuráveis. As etapas necessárias neste artigo são diferentes para cada método.

Esse recurso só está disponível para políticas personalizadas. Para obter as etapas de instalação, escolha Política personalizada no seletor anterior.

Este artigo mostra as etapas para coletar os logs do Azure AD B2C (Azure Active Directory B2C) para que você possa diagnosticar os problemas nas suas políticas personalizadas. O Application Insights fornece uma maneira de diagnosticar exceções e visualizar os problemas de desempenho do aplicativo. O Azure AD B2C inclui um recurso para envio de dados ao Application Insights.

Os logs detalhados de atividades descritos aqui devem ser habilitados SOMENTE durante o desenvolvimento de suas políticas personalizadas.

Aviso

Não defina o DeploymentMode como Development em ambientes de produção. Os logs coletam todas as declarações enviadas para e de provedores de identidade. Você, como desenvolvedor, assume a responsabilidade por quaisquer dados pessoais coletados em seus logs do Application Insights. Esses logs detalhados são coletados apenas quando a política está no MODO DE DESENVOLVEDOR.

Configurar o Application Insights

Se você ainda não tiver uma, crie uma instância do Application Insights em sua assinatura.

Dica

Uma única instância do Application Insights pode ser usada para vários locatários do Active Directory B2C. Em seguida, na consulta, filtre pelo locatário ou pelo nome da política. Para saber mais, confira os exemplos de logs do Application Insights.

Para usar uma instância existente do Application Insights em sua assinatura, siga estas etapas:

  1. Entre no portal do Azure.
  2. Use o diretório do Microsoft Entra que tem a sua assinatura do Azure, e não o diretório do Azure AD B2C. Selecione o ícone Diretórios + assinaturas na barra de ferramentas do portal.
  3. Na página Configurações do portal | Diretórios + assinaturas, encontre o diretório do Microsoft Entra na lista Nome do diretório e selecione Alternar.
  4. Abra o recurso do Application Insights que você criou anteriormente.
  5. Na página Visão geral, grave a Chave de Instrumentação

Para criar uma instância do Application Insights em sua assinatura, siga estas etapas:

  1. Entre no portal do Azure.
  2. Use o diretório do Microsoft Entra que tem a sua assinatura do Azure, e não o diretório do Azure AD B2C. Selecione o ícone Diretórios + assinaturas na barra de ferramentas do portal.
  3. Na página Configurações do portal | Diretórios + assinaturas, encontre o diretório do Microsoft Entra na lista Nome do diretório e selecione Alternar.
  4. Selecione Criar um recurso no menu de navegação à esquerda.
  5. Pesquise e selecione Application Insights e clique em Criar.
  6. Preencha o formulário e selecione Revisar + criar e selecione Criar.
  7. Assim que a implantação for concluída, selecione Ir para o recurso.
  8. Em Configurar, no menu do Application Insights, selecione Propriedades.
  9. Grave a CHAVE DE INSTRUMENTAÇÃO para ser usada em uma etapa posterior.

Configurar uma política personalizada

  1. Abra o arquivo RP (terceira parte confiável), por exemplo, SignUpOrSignin.xml.

  2. Adicione os atributos a seguir ao elemento <TrustFrameworkPolicy>:

    DeploymentMode="Development"
    UserJourneyRecorderEndpoint="urn:journeyrecorder:applicationinsights"
    
  3. Se ele ainda não existir, adicione o nó filho <UserJourneyBehaviors> ao nó <RelyingParty>. Ele deve ser colocado depois de <DefaultUserJourney ReferenceId="UserJourney Id" from your extensions policy, or equivalent (for example:SignUpOrSigninWithAAD" />. Confira Referência de esquema RelyingParty para obter uma ordem completa dos elementos filho RelyingParty.

  4. Adicione o seguinte nó como um filho do elemento <UserJourneyBehaviors>. Não esqueça de substituir {Your Application Insights Key} pela Chave de Instrumentação do Application Insights que você gravou anteriormente.

    <JourneyInsights TelemetryEngine="ApplicationInsights" InstrumentationKey="{Your Application Insights Key}" DeveloperMode="true" ClientEnabled="false" ServerEnabled="true" TelemetryVersion="1.0.0" />
    
    • O DeveloperMode="true" informa ao ApplicationInsights para acelerar a telemetria pelo pipeline de processamento. Essa configuração é boa para o desenvolvimento, mas restrita em grandes volumes. Na produção, defina DeveloperMode como false.
    • O ClientEnabled="true" envia o script do cliente do ApplicationInsights para rastrear erros do cliente e de exibição de página. Você pode visualizar isso na tabela browserTimings no portal do Application Insights. Ao definir ClientEnabled= "true", você adiciona o Application Insights ao script da página e obtém tempos de carregamento de página e chamadas AJAX, contagens, detalhes de exceções de navegador e falhas de AJAX, bem como contagens de usuários e sessões. Esse campo é opcional e é definido como false por padrão.
    • ServerEnabled="true" envia o JSON UserJourneyRecorder existente como um evento personalizado para o Application Insights.

    Por exemplo:

    <TrustFrameworkPolicy
      ...
      TenantId="fabrikamb2c.onmicrosoft.com"
      PolicyId="SignUpOrSignInWithAAD"
      DeploymentMode="Development"
      UserJourneyRecorderEndpoint="urn:journeyrecorder:applicationinsights"
    >
    ...
    <RelyingParty>
      <DefaultUserJourney ReferenceId="UserJourney ID from your extensions policy, or equivalent (for example: SignUpOrSigninWithAzureAD)" />
      <Endpoints>
         <!--points to refresh token journey when app makes refresh token request-->
         <Endpoint Id="Token" UserJourneyReferenceId="RedeemRefreshToken" />
      </Endpoints>
      <UserJourneyBehaviors>
        <JourneyInsights TelemetryEngine="ApplicationInsights" InstrumentationKey="{Your Application Insights Key}" DeveloperMode="true" ClientEnabled="false" ServerEnabled="true" TelemetryVersion="1.0.0" />
      </UserJourneyBehaviors>
      ...
    </TrustFrameworkPolicy>
    
  5. Carregue a política.

Veja os logs de no Application Insights

Há um breve atraso (menos de cinco minutos) antes que você possa ver os novos logs no Application Insights.

  1. Abra o recurso do Application Insights que você criou no Portal do Azure.
  2. Na página Visão geral, selecione Logs.
  3. Abra uma nova guia no Application Insights.

Aqui está uma lista de consultas que você pode usar para ver os logs:

Consulta Descrição
traces Obter todos os logs gerados pelo Active Directory B2C
traces | where timestamp > ago(1d) Obtenha todos os logs gerados pelo Active Directory B2C para o último dia.
traces | where message contains "exception" | where timestamp > ago(2h) Obtenha todos os logs com erros das últimas duas horas.
traces | where customDimensions.Tenant == "contoso.onmicrosoft.com" and customDimensions.UserJourney == "b2c_1a_signinandup" Obtenha todos os logs gerados pelo locatário contoso.onmicrosoft.com do Active Directory B2C. O percurso do usuário é b2c_1a_signinandup.
traces | where customDimensions.CorrelationId == "00000000-0000-0000-0000-000000000000" Obtenha todos os logs gerados pelo Active Directory B2C para a ID de correlação. Substitua a ID de correlação pela sua ID de correlação.

As entradas podem ser longas. Exporte para CSV para uma análise mais detalhada.

Para saber mais sobre as consultas, confira Visão geral de consultas de log no Azure Monitor.

Confira os logs na extensão VS Code

É recomendável instalar a extensão do Azure AD B2C para o VS Code. Com a extensão do Azure AD B2C, os logs são organizados pelo nome da política, ID de correlação (o primeiro dígito da ID de correlação é apresentado pelo application insights) e o carimbo de data/hora do log. Esse recurso ajuda a localizar os logs relevantes com base no carimbo de data/hora local e ver o percurso do usuário, conforme executado pelo Azure AD B2C.

Observação

A comunidade desenvolveu a extensão VS Code para ajudar as pessoas a implementar e manter soluções do Azure Active Directory B2C. A extensão não tem suporte da Microsoft e é disponibilizada estritamente no estado em que se encontra.

Definir acesso da API do Application Insights

Depois de configurar o Application Insights e configurar a política personalizada, você precisa obter a ID da API do Application insights e criar a chave de API. A ID da API e a chave de API são usadas pela extensão Azure AD B2C para ler os eventos do Application Insights (telemetrias). Suas chaves de API devem ser gerenciadas como senhas. Manter segredo.

Observação

A chave de instrumentação do Application Insights que você criou anteriormente é usada pelo Azure AD B2C para enviar telemetrias para o Application Insights. Você usa a chave de instrumentação somente na sua política do Azure AD B2C, não na extensão do VS Code.

Para obter o ID e a chave do Application Insights:

  1. No portal do Azure, abra o recurso do Application Insights para o seu aplicativo.

  2. Selecione Configurar e selecione Acesso à API.

  3. Copie a ID do aplicativo

  4. Selecione Criar chave de API

  5. Marque a caixa de Ler telemetria.

  6. Copie a Chave antes de fechar a folha crie e salve a chave de API em algum lugar seguro. Se você perder a chave, precisará criar outra.

    Screenshot that demonstrates how to create API access key.

Configurar a extensão VS Code do Azure AD B2C

Agora que você tem a ID da API e a chave do Application Insights do Azure, você pode configurar a extensão do VS Code para ler os logs. A extensão VS Code do Azure AD B2C fornece dois escopos para as configurações:

  • Configurações globais do usuário - configurações que são aplicáveis globalmente em toda instância do vs Code que você abrir.
  • Configurações do espaço de trabalho - configurações armazenadas no espaço de trabalho e aplicáveis apenas quando o espaço de trabalho for aberto (usando o VS Code pasta aberta).
  1. No Gerenciador de rastreamento do Azure AD B2C, clique no ícone Configurações.

    Screenshot that demonstrates select the application insights settings.

  2. Forneça a ID e a chavedo Application Insights do Azure.

  3. Clique em Salvar

Depois de salvar as configurações, os logs do Application insights aparecem na janela Rastreamento do Azure AD B2C (App insights).

Screenshot of Azure AD B2C extension for vscode, presenting the Azure Application insights trace.

Configurar o Application Insights em Produção

Para melhorar o desempenho do ambiente de produção e a melhor experiência do usuário, é importante configurar a política para ignorar as mensagens que não são importantes. Use a configuração a seguir em ambientes de produção e nenhum log será enviado ao Application Insights.

  1. Defina o atributo DeploymentMode de TrustFrameworkPolicy como Production.

    <TrustFrameworkPolicy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/online/cpim/schemas/2013/06" PolicySchemaVersion="0.3.0.0"
    TenantId="yourtenant.onmicrosoft.com"
    PolicyId="B2C_1A_signup_signin"
    PublicPolicyUri="http://yourtenant.onmicrosoft.com/B2C_1A_signup_signin"
    DeploymentMode="Production"
    UserJourneyRecorderEndpoint="urn:journeyrecorder:applicationinsights">
    
  2. Defina o DeveloperMode de JourneyInsights como false.

    <UserJourneyBehaviors>
      <JourneyInsights TelemetryEngine="ApplicationInsights" InstrumentationKey="{Your Application Insights Key}" DeveloperMode="false" ClientEnabled="false" ServerEnabled="true" TelemetryVersion="1.0.0" />
    </UserJourneyBehaviors>
    
  3. Faça o upload e teste a política.

Próximas etapas