Coletar logs B2C do Azure Ative Directory com o Application Insights

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

Este recurso está disponível apenas para políticas personalizadas. Para as etapas de configuração, selecione Política personalizada no seletor anterior.

Este artigo fornece etapas para coletar logs do Ative Directory B2C (Azure AD B2C) para que você possa diagnosticar problemas com suas políticas personalizadas. O Application Insights disponibiliza uma forma de diagnosticar exceções e ver problemas de desempenho da aplicação. O AAD B2C inclui uma funcionalidade para enviar dados para o Application Insights.

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

Aviso

Não defina o DeploymentMode para Development em ambientes de produção. Os logs coletam todas as declarações enviadas de e para 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 somente quando a política é colocada no MODO DESENVOLVEDOR.

Configurar o Application Insights

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

Gorjeta

Uma única instância do Application Insights pode ser usada para vários locatários do Azure AD B2C. Em seguida, na consulta, você pode filtrar pelo locatário ou nome da política. Para obter mais informações, consulte os logs em Exemplos do Application Insights .

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

  1. Inicie sessão no portal do Azure.
  2. Certifique-se de que está a utilizar o diretório Microsoft Entra que tem a sua subscrição do Azure e não o diretório B2C do Azure AD. Selecione o ícone Diretórios + assinaturas na barra de ferramentas do portal.
  3. Nas configurações do Portal | Página Diretórios + assinaturas , localize 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 e registre a chave de instrumentação

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

  1. Inicie sessão no portal do Azure.
  2. Certifique-se de que está a utilizar o diretório Microsoft Entra que tem a sua subscrição do Azure e não o diretório B2C do Azure AD. Selecione o ícone Diretórios + assinaturas na barra de ferramentas do portal.
  3. Nas configurações do Portal | Página Diretórios + assinaturas , localize 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. Procure e selecione Application Insights e, em seguida, selecione Criar.
  6. Preencha o formulário, selecione Rever + criar e, em seguida, selecione Criar.
  7. Quando a implantação for concluída, selecione Ir para o recurso.
  8. No menu Configurar no Application Insights, selecione Propriedades.
  9. Registre a CHAVE DE INSTRUMENTAÇÃO para uso em uma etapa posterior.

Configurar a política personalizada

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

  2. Adicione os seguintes atributos ao <TrustFrameworkPolicy> elemento :

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

  4. Adicione o seguinte nó como filho do <UserJourneyBehaviors> elemento . Certifique-se 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" />
    
    • DeveloperMode="true" informa ao ApplicationInsights para agilizar a telemetria através do pipeline de processamento. Bom para o desenvolvimento, mas limitado em grandes volumes. Na produção, defina o DeveloperMode para false.
    • ClientEnabled="true" envia o script do lado do cliente do ApplicationInsights para controlar a exibição da página e os erros do lado do cliente. Você pode visualizar isso na tabela browserTimings no portal do Application Insights. Ao definir ClientEnabled= "true"o , você adiciona o Application Insights ao seu script de página e obtém tempos de carregamentos de página e chamadas AJAX, contagens, detalhes de exceções do navegador e falhas do AJAX e contagens de usuários e sessões. Este campo é opcional e está definido como false por predefiniçã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 no Application Insights

Há um pequeno atraso, geralmente menos de cinco minutos, antes que você possa ver 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 Description
traces Obter todos os logs gerados pelo Azure AD B2C
traces | where timestamp > ago(1d) Obtenha todos os logs gerados pelo Azure AD 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 do Azure AD B2C contoso.onmicrosoft.com e a jornada do usuário é b2c_1a_signinandup.
traces | where customDimensions.CorrelationId == "00000000-0000-0000-0000-000000000000" Obtenha todos os logs gerados pelo Azure AD B2C para obter uma ID de correlação. Substitua o ID de correlação pelo ID de correlação.

As inscrições podem ser longas. Exporte para CSV para ver mais de perto.

Para obter mais informações sobre consultas, consulte Visão geral de consultas de log no Azure Monitor.

Veja os logs na extensão VS Code

Recomendamos que você instale a extensão do Azure AD B2C para VS Code. Com a extensão do Azure AD B2C, os logs são organizados para você pelo nome da política, ID de correlação (os insights do aplicativo apresentam o primeiro dígito da ID de correlação) e o carimbo de data/hora do log. Esse recurso ajuda você a localizar o log relevante com base no carimbo de data/hora local e ver a jornada do usuário conforme executada pelo Azure AD B2C.

Nota

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

Definir o acesso à API do Application Insights

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

Nota

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

Para obter a ID e a chave do Application Insights:

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

  2. Selecione Configurar e, em seguida, selecione Acesso à API.

  3. Copie o ID do aplicativo

  4. Selecione Criar chave de API

  5. Marque a caixa Ler telemetria.

  6. Copie a chave antes de fechar a folha Criar chave de API e salve-a em algum lugar seguro. Se você perder a chave, você precisa 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 e a chave da API do Azure Application insights, pode configurar a extensão VS Code para ler os logs. A extensão VS Code do Azure AD B2C fornece dois escopos para configurações:

  • Configurações Globais do Usuário - Configurações que se aplicam globalmente a qualquer instância do VS Code que você abrir.
  • Configurações do espaço de trabalho - As configurações são armazenadas dentro do espaço de trabalho e só se aplicam quando o espaço de trabalho é aberto (usando a pasta aberta do VS Code).
  1. No explorador 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 chave do Azure Application Insights.

  3. Clique em Guardar

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

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

Configurar o Application Insights na produção

Para melhorar o desempenho do ambiente de produção e melhorar a experiência do usuário, é importante configurar sua política para ignorar mensagens que não são importantes. Use a seguinte configuração em ambientes de produção e nenhum log será enviado para os insights do seu aplicativo.

  1. Defina o DeploymentModeatributo 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 DeveloperModedo JourneyInsights como false.

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

Próximos passos