Rastreie o comportamento do usuário no Azure Active Directory B2C utilizando 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.

O Azure Active Directory B2C (Azure AD B2C) permite o envio de dados de eventos diretamente para o Application Insights usando a chave de instrumentação fornecida para o Azure Active Directory B2C. Com um perfil técnico do Application Insights, você pode obter logs de eventos detalhados e personalizados para seus percursos do usuário para:

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

Visão geral

Habilitar logs de eventos personalizados, adicione um Application Insights técnico. No perfil técnico, você define a chave Application Insights de instrumentação, o nome do evento e as declarações a registrar. Para postar um evento, adicione o perfil técnico como uma etapa de orquestração no percurso do usuário.

Ao usar Application Insights, considere o seguinte:

  • Há um pequeno atraso, normalmente menos de cinco minutos, antes que novos logs sejam disponibilizados Application Insights.
  • 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 Application Insights perfil técnico diretamente de um percurso do usuário ou de um submistragem. Não use um perfil técnico Application Insights como um perfil técnico de validação.

Pré-requisitos

Criar um recurso do Application Insights

Quando você estiver usando o Application Insights com o Azure AD B2C, tudo o que você precisa fazer é criar um recurso e obter a chave de instrumentação. Para saber informações, confira Criar um recurso do Application Insights.

  1. Entre no portal do Azure.
  2. Se você tiver acesso a vários locatários, selecione o ícone Configurações no menu superior para alternar para o locatário do Microsoft Entra ID no menu Diretórios + assinaturas.
  3. Escolher criar um recurso no canto superior esquerdo do portal do Azure e, em seguida, procure e selecione Application Insights.
  4. Selecione Criar.
  5. Em Nome, insira um nome para o recurso.
  6. Para tipo de aplicativo, selecione aplicativo web ASP.NET.
  7. Para grupo de recursos, selecione um grupo existente ou digite um nome para um novo grupo.
  8. Selecione Criar.
  9. Abra o novo Application Insights, expanda Essentialse copie a chave de instrumentação.

Screenshot that shows the Instrumentation Key on the Application Insights Overview tab.

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 noesquema ClaimsSchema.

  1. Abra o arquivo de extensões da sua 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. Encontre 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

Os 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 seguinte tabela define os perfis técnicos que são usados para abrir uma sessão e postar eventos.

Perfil técnico Tarefa
AppInsights-Common O perfil técnico comum com configuração típica. Ele inclui a chave Application Insights de instrumentação, uma coleção de declarações a registrar e o modo de 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 entrada foi recebida.
AppInsights-UserSignUp Registra um evento UserSignUp quando o usuário aciona a opção de inscrição em uma jornada de inscrição ou entrada.
AppInsights-SignInComplete Registra um evento SignInComplete após a autenticação bem-sucedida, quando um token foi enviado para o aplicativo de terceira parte confiável.

Abre o arquivo TrustFrameworkExtensions.xml do starter pack. 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 instrumentation key, which you use for logging the events -->
        <Item Key="InstrumentationKey">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 chave de instrumentação no perfil técnico AppInsights-Common para o GUID que seu recurso do Application Insights fornece.

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

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

Importante

Após adicionar as novas etapas de orquestração, renumere as etapas sequencialmente sem ignorar números inteiros de 1 a N.

  1. Chame AppInsights-SignInRequest como a segunda etapa de orquestração. Esta etapa acompanha que 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>
    
  2. Imediatamente antes da etapa de orquestração SendClaims, adicione uma nova etapa que chama AppInsights-UserSignup. É disparado quando o usuário seleciona o botão de inscrição em um percurso de inscrição ou entrada.

    <!-- Handles the user selecting the sign-up link in the local account sign-in page -->
    <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>
    
  3. Após a etapa de orquestração SendClaims, chame AppInsights-SignInComplete. Esta etapa mostra um percurso concluído com êxito.

    <!-- Track that we have successfully sent a token -->
    <OrchestrationStep Order="10" Type="ClaimsExchange">
      <ClaimsExchanges>
        <ClaimsExchange Id="TrackSignInComplete" TechnicalProfileReferenceId="AppInsights-SignInComplete" />
      </ClaimsExchanges>
    </OrchestrationStep>
    

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

Faça upload do arquivo TrustFrameworkExtensions.xml no seu locatário. 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 os eventos estejam disponíveis no Application Insights.

  1. Abra o recurso do Application Insights no locatário do Microsoft Entra.
  2. Selecione Usoe, em seguida, selecione Eventos.
  3. Defina Durante para Última hora e Por para 3 minutos. Você talvez precise atualizar a janela para ver os resultados.

Screenshot that shows Application Insights event statistics.

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çãoe, em seguida, adicione a declaração à coleção de declarações de entrada. As declarações adicionadas ao perfil técnico AppInsights-comum aparecem em todos os eventos. As declarações que você adiciona a um perfil técnico específico aparecem apenas nesse evento. O elemento 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 é exibido no Azure Insights. Use a sintaxe da {property:NAME}, onde NAME é a propriedade que está sendo adicionada 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 identityProvider declaração é definida pelos perfis técnicos da Federação, como o Facebook. Se a declaração estiver vazia, indicará que o usuário entrou com uma conta local. Portanto, o valor padrão é definido como local. Você também pode registrar um resolvedor de declaração 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 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, habilitá-lo resulta em eventos que são enviados imediatamente para Application Insights. O valor padrão é false. Não habilita o modo de desenvolvedor em ambientes de produção.

Para habilitar o modo de desenvolvedor, altere os DeveloperModetrue metadados para no perfil AppInsights-Common técnico:

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

Desabilitar telemetria

Para desabilitar Application Insights logs, altere os DisableTelemetry metadados true para no perfil AppInsights-Common técnico:

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

Próximas etapas

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