Compartilhar via


Acompanhar o comportamento do usuário no Azure AD B2C usando o Application Insights

Importante

A partir de 1º de maio de 2025, o Azure AD B2C não estará mais disponível para compra para novos clientes. Saiba mais em nossas perguntas frequentes.

Antes de começar, use o seletor Escolha um tipo de política na parte superior dessa página 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 de usuários predefinidos ou por meio de políticas personalizadas totalmente configuráveis. As etapas necessárias neste artigo são diferentes para cada método.

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

No Azure Active Directory B2C (Azure AD B2C), você pode enviar dados de evento diretamente para o Application Insights usando a cadeia de conexão fornecida ao Azure AD B2C. Com um perfil técnico do Application Insights, você pode obter logs de eventos detalhados e personalizados para seus percursos de usuário para:

  • Obtenha insights sobre o comportamento do usuário.
  • Solucionar problemas de suas próprias políticas em desenvolvimento ou em produção.
  • Medir o desempenho.
  • Crie notificações do Application Insights.

Observação

Esse recurso está em versão prévia pública.

Visão geral

Para habilitar logs de eventos personalizados, adicione um perfil técnico do Application Insights. No perfil técnico, você define a cadeia de conexão do Application Insights, o nome do evento e as declarações a serem registradas. Para postar um evento, adicione o perfil técnico como uma etapa de orquestração em um percurso do usuário.

Ao usar o Application Insights, considere o seguinte:

  • Há um pequeno atraso, normalmente de menos de cinco minutos, antes que novos logs estejam disponíveis no Application Insights.
  • O Azure AD B2C permite que você escolha quais declarações registrar. Não inclua declarações com dados pessoais.
  • Para registrar uma sessão de usuário, você pode usar uma ID de correlação para unificar eventos.
  • Chame o perfil técnico do Application Insights diretamente de um percurso do usuário ou de um sub-percurso. Não use um perfil técnico do Application Insights como um perfil técnico de validação.

Pré-requisitos

Criar um recurso do Application Insights

Ao usar o Application Insights com o Azure AD B2C, tudo o que você precisa fazer é criar um recurso e obter a cadeia de conexão. Para obter informações, consulte Criar um recurso do Application Insights.

  1. Entre no portal do Azure.
  2. Se você tiver acesso a vários inquilinos, selecione o ícone Configurações no menu superior para mudar para o inquilino do Microsoft Entra ID no menu Diretórios + assinaturas.
  3. Escolha Criar um recurso no canto superior esquerdo do portal do Azure e pesquise e selecione Application Insights.
  4. Selecione Criar.
  5. Para Nome, insira um nome para o recurso.
  6. Para Tipo de Aplicativo, selecione ASP.NET aplicativo Web.
  7. Para o Grupo de Recursos, selecione um grupo existente ou insira um nome para um novo grupo.
  8. Selecione Criar.
  9. Abra o novo recurso do Application Insights, expanda o Essentials e copie a cadeia de conexão.

Captura de tela que mostra a cadeia de conexão na guia Visão Geral do Application Insights.

Definir declarações

Uma declaração fornece armazenamento temporário de dados durante uma execução de política do Azure AD B2C. Você declara suas declarações no elemento ClaimsSchema.

  1. Abra o arquivo de extensões da política. O arquivo pode ser semelhante a SocialAndLocalAccounts/TrustFrameworkExtensions.xml.

  2. Pesquise o elemento BuildingBlocks . Se o elemento não aparecer, adicione-o.

  3. Localize o elemento ClaimsSchema . Se o elemento não aparecer, adicione-o.

  4. Adicione as seguintes declarações ao elemento ClaimsSchema :

    <ClaimType Id="EventType">
      <DisplayName>Event type</DisplayName>
      <DataType>string</DataType>
    </ClaimType>
    <ClaimType Id="EventTimestamp">
      <DisplayName>Event timestamp</DisplayName>
      <DataType>string</DataType>
    </ClaimType>
    <ClaimType Id="PolicyId">
      <DisplayName>Policy Id</DisplayName>
      <DataType>string</DataType>
    </ClaimType>
    <ClaimType Id="Culture">
      <DisplayName>Culture ID</DisplayName>
      <DataType>string</DataType>
    </ClaimType>
    <ClaimType Id="CorrelationId">
      <DisplayName>Correlation Id</DisplayName>
      <DataType>string</DataType>
    </ClaimType>
    <ClaimType Id="federatedUser">
      <DisplayName>Federated user</DisplayName>
      <DataType>boolean</DataType>
    </ClaimType>
    <ClaimType Id="parsedDomain">
      <DisplayName>Domain name</DisplayName>
      <DataType>string</DataType>
      <UserHelpText>The domain portion of the email address.</UserHelpText>
    </ClaimType>
    <ClaimType Id="userInLocalDirectory">
      <DisplayName>userInLocalDirectory</DisplayName>
      <DataType>boolean</DataType>
    </ClaimType>
    

Adicionar novos perfis técnicos

Perfis técnicos podem ser considerados funções na política personalizada. Essas funções usam a abordagem de inclusão de perfil técnico , em que um perfil técnico inclui outro perfil técnico e altera as configurações ou adiciona novas funcionalidades. A tabela a seguir define os perfis técnicos que são utilizados para a abertura de uma sessão e postagem de eventos.

Perfil técnico Tarefa
AppInsights-Common O perfil técnico comum com configuração típica. Ele inclui a string de conexão do Application Insights, uma coleção de declarações a serem registradas e o modo desenvolvedor. Os outros perfis técnicos incluem o perfil técnico comum e adicionam mais declarações, como o nome do evento.
AppInsights-SignInRequest Registra um evento SignInRequest com um conjunto de declarações quando uma solicitação de acesso é recebida.
AppInsights-UserSignUp Registra um evento UserSignUp quando o usuário dispara a opção de inscrição em um percurso de inscrição ou entrada.
AppInsights-SignInComplete Registra um evento SignInComplete após a autenticação bem-sucedida, quando um token é enviado para o aplicativo de terceira parte confiável.

Abra o arquivo TrustFrameworkExtensions.xml do pacote inicial. Adicione os perfis técnicos ao elemento ClaimsProvider :

<ClaimsProvider>
  <DisplayName>Application Insights</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="AppInsights-Common">
      <DisplayName>Application Insights</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.Insights.AzureApplicationInsightsProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <Metadata>
        <!-- The ApplicationInsights connection string, which you use for logging the events -->
        <Item Key="ConnectionString">xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</Item>
        <Item Key="DeveloperMode">false</Item>
        <Item Key="DisableTelemetry ">false</Item>
      </Metadata>
      <InputClaims>
        <!-- Properties of an event are added through the syntax {property:NAME}, where NAME is the property being added to the event. DefaultValue can be either a static value or a value that's resolved by one of the supported DefaultClaimResolvers. -->
        <InputClaim ClaimTypeReferenceId="EventTimestamp" PartnerClaimType="{property:EventTimestamp}" DefaultValue="{Context:DateTimeInUtc}" />
        <InputClaim ClaimTypeReferenceId="tenantId" PartnerClaimType="{property:TenantId}" DefaultValue="{Policy:TrustFrameworkTenantId}" />
        <InputClaim ClaimTypeReferenceId="PolicyId" PartnerClaimType="{property:Policy}" DefaultValue="{Policy:PolicyId}" />
        <InputClaim ClaimTypeReferenceId="CorrelationId" PartnerClaimType="{property:CorrelationId}" DefaultValue="{Context:CorrelationId}" />
        <InputClaim ClaimTypeReferenceId="Culture" PartnerClaimType="{property:Culture}" DefaultValue="{Culture:RFC5646}" />
      </InputClaims>
    </TechnicalProfile>

    <TechnicalProfile Id="AppInsights-SignInRequest">
      <InputClaims>
        <!-- An input claim with a PartnerClaimType="eventName" is required. This is used by the AzureApplicationInsightsProvider to create an event with the specified value. -->
        <InputClaim ClaimTypeReferenceId="EventType" PartnerClaimType="eventName" DefaultValue="SignInRequest" />
      </InputClaims>
      <IncludeTechnicalProfile ReferenceId="AppInsights-Common" />
    </TechnicalProfile>

    <TechnicalProfile Id="AppInsights-UserSignUp">
      <InputClaims>
        <InputClaim ClaimTypeReferenceId="EventType" PartnerClaimType="eventName" DefaultValue="UserSignUp" />
      </InputClaims>
      <IncludeTechnicalProfile ReferenceId="AppInsights-Common" />
    </TechnicalProfile>

    <TechnicalProfile Id="AppInsights-SignInComplete">
      <InputClaims>
        <InputClaim ClaimTypeReferenceId="EventType" PartnerClaimType="eventName" DefaultValue="SignInComplete" />
        <InputClaim ClaimTypeReferenceId="federatedUser" PartnerClaimType="{property:FederatedUser}" DefaultValue="false" />
        <InputClaim ClaimTypeReferenceId="parsedDomain" PartnerClaimType="{property:FederationPartner}" DefaultValue="Not Applicable" />
        <InputClaim ClaimTypeReferenceId="identityProvider" PartnerClaimType="{property:IDP}" DefaultValue="Local" />
      </InputClaims>
      <IncludeTechnicalProfile ReferenceId="AppInsights-Common" />
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

Importante

Altere a cadeia de conexão no perfil técnico AppInsights-Common para o GUID fornecido pelo recurso do Application Insights.

Adicionar os perfis técnicos como etapas de orquestração

Adicione novas etapas de orquestração que se referem aos perfis técnicos.

Importante

Depois de adicionar as novas etapas de orquestração, renumere as etapas sequencialmente sem pular nenhum inteiro de 1 até N.

  1. Identifique o arquivo de política que contém o percurso do usuário, como SocialAndLocalAccounts/SignUpOrSignin.xml, em seguida, abra-o.

  2. Chame AppInsights-SignInRequest como a segunda etapa de orquestração. Esta etapa controla se uma solicitação de inscrição ou de entrada foi recebida.

    <!-- Track that we have received a sign in request -->
    <OrchestrationStep Order="2" Type="ClaimsExchange">
      <ClaimsExchanges>
        <ClaimsExchange Id="TrackSignInRequest" TechnicalProfileReferenceId="AppInsights-SignInRequest" />
      </ClaimsExchanges>
    </OrchestrationStep>
    
  3. Antes da SendClaims etapa de orquestração, adicione uma nova etapa que chame AppInsights-UserSignup. Ele é acionado quando o usuário seleciona o botão de cadastro em um processo de inscrição ou entrada. Talvez seja necessário atualizar a etapa de orquestração, Order="8", para garantir que você não pule nenhum inteiro da primeira para a última etapa de orquestração.

    <!-- Handles the user selecting the sign-up link in the local account sign-in page 
     The `SendClaims` orchestration step comes after this one,
     -->
    <OrchestrationStep Order="8" Type="ClaimsExchange">
      <Preconditions>
        <Precondition Type="ClaimsExist" ExecuteActionsIf="false">
          <Value>newUser</Value>
          <Action>SkipThisOrchestrationStep</Action>
        </Precondition>
        <Precondition Type="ClaimEquals" ExecuteActionsIf="true">
          <Value>newUser</Value>
          <Value>false</Value>
          <Action>SkipThisOrchestrationStep</Action>
        </Precondition>
      </Preconditions>
      <ClaimsExchanges>
        <ClaimsExchange Id="TrackUserSignUp" TechnicalProfileReferenceId="AppInsights-UserSignup" />
      </ClaimsExchanges>
    </OrchestrationStep>
    
  4. Após a etapa de orquestração SendClaims, chame AppInsights-SignInComplete. Esta etapa mostra um percurso concluído com êxito. Talvez seja necessário atualizar a etapa de orquestração, Order="10", para garantir que você não ignore nenhum inteiro desde a primeira até a última etapa de orquestração.

    <!-- Track that we have successfully sent a token 
     The `SendClaims` orchestration step come before this one,
     -->
    <OrchestrationStep Order="10" Type="ClaimsExchange">
      <ClaimsExchanges>
        <ClaimsExchange Id="TrackSignInComplete" TechnicalProfileReferenceId="AppInsights-SignInComplete" />
      </ClaimsExchanges>
    </OrchestrationStep>
    

Carregar seu arquivo, executar a política e exibir eventos

Salve e carregue o arquivo TrustFrameworkExtensions.xml . Em seguida, chame a política da terceira parte confiável de seu aplicativo ou use Executar agora no portal do Azure. Aguarde até que seus eventos estejam disponíveis no Application Insights.

  1. Abra o recurso application insights em seu locatário do Microsoft Entra.
  2. Selecione Uso e selecione Eventos.
  3. Defina Durante para Última hora e Por para 3 minutos. Talvez seja necessário atualizar a janela para ver os resultados.

Captura de tela que mostra as estatísticas de eventos do Application Insights.

Coletar mais dados

Para atender às suas necessidades de negócios, talvez você queira registrar mais declarações. Para adicionar uma declaração, primeiro defina uma declaração e adicione a declaração à coleção de declarações de entrada. Declarações que você adiciona ao perfil técnico AppInsights-Common aparecem em todos os eventos. As declarações que você adiciona a um perfil técnico específico aparecem somente nesse evento. O elemento de declaração de entrada contém os seguintes atributos:

  • ClaimTypeReferenceId é a referência a um tipo de declaração.
  • PartnerClaimType é o nome da propriedade que aparece no Azure Insights. Use a sintaxe de {property:NAME}, onde NAME está sendo adicionada uma propriedade ao evento.
  • DefaultValue é um valor predefinido a ser registrado, como um nome de evento. Se uma declaração usada no percurso do usuário estiver vazia, o valor padrão será usado. Por exemplo, a declaração identityProvider é definida pelos perfis técnicos da Federação, como o Facebook. Se a declaração estiver vazia, ela indicará que o usuário entrou com uma conta local. Assim, o valor padrão é definido como Local. Você também pode gravar um resolvedor de declarações com um valor contextual, como a ID do aplicativo ou o endereço IP do usuário.

Manipular declarações

Você pode usar transformações de declarações de entrada para modificar as declarações de entrada ou gerar novas antes de enviá-las para o Application Insights. No exemplo a seguir, o perfil técnico inclui a transformação CheckIsAdmin de declarações de entrada.

<TechnicalProfile Id="AppInsights-SignInComplete">
  <InputClaimsTransformations>  
    <InputClaimsTransformation ReferenceId="CheckIsAdmin" />
  </InputClaimsTransformations>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="isAdmin" PartnerClaimType="{property:IsAdmin}"  />
    ...
  </InputClaims>
  <IncludeTechnicalProfile ReferenceId="AppInsights-Common" />
</TechnicalProfile>

Adicionar eventos

Para adicionar um evento, crie um novo perfil técnico que inclua o AppInsights-Common perfil técnico. Em seguida, adicione o novo perfil técnico como uma etapa de orquestração ao percurso do usuário. Use o elemento Precondition para disparar o evento quando estiver pronto. Por exemplo, informe o evento somente quando os usuários executarem a autenticação multifator.

<TechnicalProfile Id="AppInsights-MFA-Completed">
  <InputClaims>
     <InputClaim ClaimTypeReferenceId="EventType" PartnerClaimType="eventName" DefaultValue="MFA-Completed" />
  </InputClaims>
  <IncludeTechnicalProfile ReferenceId="AppInsights-Common" />
</TechnicalProfile>

Importante

Ao adicionar um evento ao percurso do usuário, lembre-se de renumerar as etapas de orquestração sequencialmente.

<OrchestrationStep Order="8" Type="ClaimsExchange">
  <Precondition Type="ClaimsExist" ExecuteActionsIf="true">
    <Value>isActiveMFASession</Value>
    <Action>SkipThisOrchestrationStep</Action>
    </Precondition>
  </Preconditions>
  <ClaimsExchanges>
    <ClaimsExchange Id="TrackUserMfaCompleted" TechnicalProfileReferenceId="AppInsights-MFA-Completed" />
  </ClaimsExchanges>
</OrchestrationStep>

Habilitar o modo de desenvolvedor

Ao usar o Application Insights para definir eventos, você pode indicar se o modo de desenvolvedor está habilitado. O modo de desenvolvedor controla como os eventos são armazenados em buffer. Em um ambiente de desenvolvimento com volume mínimo de eventos, habilitar o modo de desenvolvedor resulta em eventos enviados imediatamente ao Application Insights. O valor padrão é false. Não habilite o modo de desenvolvedor em ambientes de produção.

Para habilitar o modo de desenvolvedor, altere os metadados de DeveloperMode para true no perfil técnico AppInsights-Common.

<TechnicalProfile Id="AppInsights-Common">
  <Metadata>
    ...
    <Item Key="DeveloperMode">true</Item>
  </Metadata>
</TechnicalProfile>

Desabilitar telemetria

Para desabilitar os logs do Application Insights, altere o DisableTelemetry metadado para true no perfil técnico AppInsights-Common.

<TechnicalProfile Id="AppInsights-Common">
  <Metadata>
    ...
    <Item Key="DisableTelemetry">true</Item>
  </Metadata>
</TechnicalProfile>

Próximas etapas

Saiba como criar painéis de KPI personalizados usando o Azure Application Insights.