Tenere traccia del comportamento degli utenti in Azure AD B2C usando Application Insights

Prima di iniziare, usare il selettore Scegli un tipo di criterio per scegliere il tipo di criterio che si sta configurando. Azure Active Directory B2C offre due metodi per definire il modo in cui gli utenti interagiscono con le applicazioni: tramite flussi utente predefiniti o tramite criteri personalizzati completamente configurabili. I passaggi necessari in questo articolo sono diversi per ogni metodo.

Questa funzionalità è disponibile solo per i criteri personalizzati. Per i passaggi di installazione, selezionare Criteri personalizzati nel selettore precedente.

In Azure Active Directory B2C (Azure AD B2C) è possibile inviare i dati degli eventi direttamente ad Application Insights usando la chiave di strumentazione fornita ad Azure AD B2C. Con un profilo tecnico di Application Insights è possibile ottenere registri eventi dettagliati e personalizzati per i percorsi utente per:

  • Ottenere informazioni dettagliate sul comportamento degli utenti.
  • Risolvere i problemi relativi ai criteri in ambiente di sviluppo o di produzione.
  • Misurare le prestazioni.
  • Creare notifiche da Application Insights.

Panoramica

Per abilitare i log eventi personalizzati, aggiungere un profilo tecnico di Application Insights. Nel profilo tecnico si definiscono la chiave di strumentazione di Application Insights, il nome dell'evento e le attestazioni da registrare. Per pubblicare un evento, aggiungere il profilo tecnico come passaggio di orchestrazione in un percorso utente.

Quando si usa Application Insights, considerare quanto segue:

  • Si verifica un breve ritardo, in genere inferiore a cinque minuti, prima che i nuovi log siano disponibili in Application Insights.
  • Azure AD B2C consente di scegliere le attestazioni da registrare. Non includere attestazioni con dati personali.
  • Per registrare una sessione utente, è possibile usare un ID di correlazione per unificare gli eventi.
  • Chiamare il profilo tecnico di Application Insights direttamente da un percorso utente o da un percorso secondario. Non usare un profilo tecnico di Application Insights come profilo tecnico di convalida.

Prerequisiti

Crea una risorsa Application Insights

Quando si usa Application Insights con Azure AD B2C, è sufficiente creare una risorsa e ottenere la chiave di strumentazione. Per informazioni, vedere Creare una risorsa di Application Insights.

  1. Accedi al portale di Azure.
  2. Se si ha accesso a più tenant, selezionare l'icona Impostazioni nel menu in alto per passare al tenant microsoft Entra ID dal menu Directory e sottoscrizioni.
  3. Scegliere Crea una risorsa nell'angolo superiore sinistro del portale di Azure e quindi cercare e selezionare Application Insights.
  4. Seleziona Crea.
  5. In Nome immettere un nome per la risorsa.
  6. In Tipo di applicazione selezionare Applicazione Web ASP.NET.
  7. In Gruppo di risorse selezionare un gruppo esistente o immettere un nome per un nuovo gruppo.
  8. Seleziona Crea.
  9. Aprire la nuova risorsa di Application Insights, espandere Informazioni di base e copiare la chiave di strumentazione.

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

Definire attestazioni

Un'attestazione fornisce un'archiviazione temporanea dei dati durante l'esecuzione dei criteri di Azure AD B2C. Le attestazioni vengono dichiarate nell'elemento ClaimsSchema.

  1. Aprire il file delle estensioni del criterio, Il file potrebbe essere simile a SocialAndLocalAccounts/TrustFrameworkExtensions.xml.

  2. Cercare l'elemento BuildingBlocks. Se l'elemento non viene visualizzato, aggiungerlo.

  3. Trovare l'elemento ClaimsSchema . Se l'elemento non viene visualizzato, aggiungerlo.

  4. Aggiungere le attestazioni seguenti all'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>
    

Aggiungere nuovi profili tecnici

I profili tecnici possono essere considerati funzioni nei criteri personalizzati. Queste funzioni usano l'approccio di inclusione del profilo tecnico, in cui un profilo tecnico include un altro profilo tecnico e modifica le impostazioni o aggiunge nuove funzionalità. La tabella seguente definisce i profili tecnici usati per aprire una sessione e pubblicare eventi.

Profilo tecnico Attività
AppInsights-Common Profilo tecnico comune con configurazione tipica. Include la chiave di strumentazione di Application Insights, una raccolta di attestazioni da registrare e la modalità sviluppatore. Gli altri profili tecnici includono il profilo tecnico comune e aggiungono altre attestazioni, ad esempio il nome dell'evento.
AppInsights-SignInRequest Registra un evento SignInRequest con un set di attestazioni quando è stata ricevuta una richiesta di accesso.
AppInsights-UserSignUp Registra un evento UserSignUp quando l'utente attiva l'opzione di iscrizione in un percorso di iscrizione o accesso.
AppInsights-SignInComplete Registra un evento SignInComplete al termine dell'autenticazione, quando un token è stato inviato all'applicazione relying party.

Aprire il file TrustFrameworkExtensions.xml dal pacchetto starter. Aggiungere i profili tecnici all'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

Modificare la chiave di strumentazione nel profilo tecnico AppInsights-Common con il GUID fornito dalla risorsa di Application Insights.

Aggiungere i profili tecnici come passaggi di orchestrazione

Aggiungere nuovi passaggi di orchestrazione che fanno riferimento ai profili tecnici.

Importante

Dopo avere aggiunto i nuovi passaggi di orchestrazione, rinumerare i passaggi in sequenza senza ignorare alcun numero intero, da 1 a N.

  1. Chiamare AppInsights-SignInRequest come secondo passaggio di orchestrazione. Questo passaggio tiene traccia della ricezione di una richiesta di iscrizione o di accesso.

    <!-- Track that we have received a sign in request -->
    <OrchestrationStep Order="2" Type="ClaimsExchange">
      <ClaimsExchanges>
        <ClaimsExchange Id="TrackSignInRequest" TechnicalProfileReferenceId="AppInsights-SignInRequest" />
      </ClaimsExchanges>
    </OrchestrationStep>
    
  2. Prima del SendClaims passaggio di orchestrazione, aggiungere un nuovo passaggio che chiama AppInsights-UserSignup. Viene attivato quando l'utente seleziona il pulsante di iscrizione in un percorso di iscrizione o di accesso.

    <!-- 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. Dopo il passaggio di SendClaims orchestrazione, chiamare AppInsights-SignInComplete. Questo passaggio mostra un percorso completato correttamente.

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

Caricare il file, eseguire i criteri e visualizzare gli eventi

Salvare e caricare il file TrustFrameworkExtensions.xml. Chiamare quindi i criteri della relying party dall'applicazione o usare Esegui ora nella portale di Azure. Attendere che gli eventi siano disponibili in Application Insights.

  1. Aprire la risorsa di Application Insights nel tenant di Microsoft Entra.
  2. Selezionare Utilizzo e quindi Eventi.
  3. Impostare Durante su Ultima ora e Da su 3 minuti. Potrebbe essere necessario aggiornare la finestra per visualizzare i risultati.

Screenshot that shows Application Insights event statistics.

Raccogliere altri dati

Per soddisfare le esigenze aziendali, è possibile registrare più attestazioni. Per aggiungere un'attestazione, definire prima un'attestazione, quindi aggiungere l'attestazione alla raccolta di attestazioni di input. Le attestazioni aggiunte al profilo tecnico AppInsights-Common vengono visualizzate in tutti gli eventi. Le attestazioni aggiunte a un profilo tecnico specifico vengono visualizzate solo in tale evento. L'elemento attestazione di input contiene gli attributi seguenti:

  • ClaimTypeReferenceId è il riferimento a un tipo di attestazione.
  • PartnerClaimType è il nome della proprietà visualizzato in Azure Insights. Usare la sintassi di {property:NAME}, dove NAME è una proprietà da aggiungere all'evento.
  • DefaultValue è un valore predefinito da registrare, ad esempio un nome di evento. Se un'attestazione utilizzata nel percorso utente è vuota, viene usato il valore predefinito. Ad esempio, l'attestazione identityProvider viene impostata dai profili tecnici della federazione, ad esempio Facebook. Se l'attestazione è vuota, indica che l'utente ha eseguito l'accesso con un account locale. Di conseguenza, il valore predefinito è impostato su Locale. È anche possibile registrare un resolver di attestazioni con un valore contestuale, ad esempio l'ID applicazione o l'indirizzo IP dell'utente.

Modificare le attestazioni

È possibile usare le trasformazioni delle attestazioni di input per modificare le attestazioni di input o generarne di nuove prima di inviarle ad Application Insights. Nell'esempio seguente il profilo tecnico include la CheckIsAdmin trasformazione delle attestazioni di input.

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

Aggiungere eventi

Per aggiungere un evento, creare un nuovo profilo tecnico che includa il AppInsights-Common profilo tecnico. Aggiungere quindi il nuovo profilo tecnico come passaggio di orchestrazione al percorso utente. Usare l'elemento Precondizione per attivare l'evento quando si è pronti. Ad esempio, segnalare l'evento solo quando gli utenti eseguono l'autenticazione a più fattori.

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

Importante

Quando si aggiunge un evento al percorso utente, ricordarsi di rinumerare i passaggi di orchestrazione in sequenza.

<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>

Abilitare la modalità sviluppatore

Quando si usa Application Insights per definire gli eventi, è possibile indicare se la modalità sviluppatore è abilitata. La modalità sviluppatore controlla il modo in cui gli eventi vengono memorizzati nel buffer. In un ambiente di sviluppo con volume di eventi minimo, l'abilitazione della modalità sviluppatore comporta l'invio immediato di eventi ad Application Insights. Il valore predefinito è false. Non abilitare la modalità sviluppatore negli ambienti di produzione.

Per abilitare la modalità sviluppatore, modificare i DeveloperMode metadati in true nel AppInsights-Common profilo tecnico:

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

Disabilitare telemetria

Per disabilitare i log di Application Insights, modificare i DisableTelemetry metadati in true nel AppInsights-Common profilo tecnico:

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

Passaggi successivi

Informazioni su come creare dashboard KPI personalizzati usando app Azure lication Insights.