Condividi tramite


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

Importante

A partire dal 1° maggio 2025, Azure AD B2C non sarà più disponibile per l'acquisto per i nuovi clienti. Altre informazioni sono disponibili nelle domande frequenti.

Prima di iniziare, utilizza il selettore Scegli un tipo di criterio nella parte superiore di questa pagina 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 stringa di connessione fornita ad Azure AD B2C. Con un profilo tecnico di Application Insights, è possibile ottenere registri degli eventi dettagliati e personalizzati per i percorsi degli utenti.

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

Annotazioni

Questa funzionalità è disponibile in anteprima pubblica.

Informazioni generali

Per abilitare i log eventi personalizzati, aggiungere un profilo tecnico di Application Insights. Nel profilo tecnico si definiscono la stringa di connessione 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 stringa di connessione. Per informazioni, vedere Creare una risorsa di Application Insights.

  1. Accedi al portale di Azure.
  2. Se hai accesso a più tenant, seleziona l'icona Impostazioni nel menu superiore per passare al tenant di Microsoft Entra ID dal menu Directory e abbonamenti.
  3. Scegliere Crea una risorsa nell'angolo superiore sinistro del portale di Azure e quindi cercare e selezionare Application Insights.
  4. Fare clic su Crea.
  5. In Nome immettere un nome per la risorsa.
  6. In Tipo di applicazione selezionare ASP.NET'applicazione Web.
  7. Per Gruppo di risorse selezionare un gruppo esistente o immettere un nome per un nuovo gruppo.
  8. Fare clic su Crea.
  9. Aprire la nuova risorsa di Application Insights, espandere Essenziali e copiare la stringa di connessione.

Screenshot che mostra la stringa di connessione nella scheda Panoramica di Application Insights.

Definire attestazioni

Un'attestazione fornisce un'archiviazione temporanea dei dati durante l'esecuzione dei criteri di Azure AD B2C. Tu dichiari le attestazioni nell'elemento ClaimsSchema.

  1. Aprire il file delle estensioni della tua politica. Il file potrebbe essere simile a SocialAndLocalAccounts/TrustFrameworkExtensions.xml.

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

  3. Trova 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 stringa di connessione 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 fileTrustFrameworkExtensions.xml dallo starter pack. 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 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

Modificare la stringa di connessione nel profilo tecnico AppInsights-Common sui GUID fornito dalla risorsa di Application Insights.

Aggiungi i profili tecnici come passaggi di orchestrazione.

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

Importante

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

  1. Identificare il file di criteri che contiene il percorso utente, ad esempio SocialAndLocalAccounts/SignUpOrSignin.xml, quindi aprirlo.

  2. 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>
    
  3. 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. Potrebbe essere necessario aggiornare il passaggio di orchestrazione, Order="8"per assicurarsi di non ignorare alcun numero intero dal primo all'ultimo passaggio di orchestrazione.

    <!-- 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. Dopo il passaggio di orchestrazione SendClaims, chiamare AppInsights-SignInComplete. Questo passaggio mostra un percorso completato correttamente. Potrebbe essere necessario aggiornare il passaggio di orchestrazione, Order="10", per assicurarsi di non ignorare alcun numero intero dal primo all'ultimo passaggio di orchestrazione.

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

Carica il file, esegui la policy, e visualizza gli eventi

Salvare e caricare il file diTrustFrameworkExtensions.xml . Chiamare quindi i criteri della relying party dall'applicazione o usare Esegui adesso nel 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 che mostra le statistiche degli eventi di Application Insights.

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 dichiarazioni aggiunte al profilo tecnico AppInsights-Common vengono visualizzate in tutti gli eventi. Le dichiarazioni aggiunte a un profilo tecnico specifico vengono visualizzate solo in quell'occasione. L'elemento di attestazione input contiene gli attributi seguenti:

  • ClaimTypeReferenceId è il riferimento a un tipo di attestazione.
  • PartnerClaimType è il nome della proprietà visualizzata 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 è 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 trasformazione delle attestazioni di input CheckIsAdmin.

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

Abilita 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 con Azure Application Insights.