Raccogliere i log di Azure Active Directory B2C con 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.

Questo articolo illustra la procedura per raccogliere i log da Active Directory B2C (Azure AD B2C) in modo da poter diagnosticare i problemi con i criteri personalizzati. servizio che consente di diagnosticare le eccezioni e di visualizzare i problemi di prestazioni delle applicazioni. Azure AD B2C supporta una funzionalità per l'invio di dati ad Application Insights.

I log attività dettagliati descritti di seguito devono essere abilitati SOLO durante lo sviluppo dei criteri personalizzati.

Avviso

Non impostare su DeploymentModeDevelopment in ambienti di produzione. I log raccolgono tutte le attestazioni inviate a e dai provider di identità. L'utente come sviluppatore si assume la responsabilità di tutti i dati personali raccolti nei log di Application Insights. Questi log dettagliati vengono raccolti solo quando i criteri vengono inseriti in MODALITÀ SVILUPPATORE.

Impostare Application Insights

Se non è già disponibile, creare un'istanza di Application Insights nella sottoscrizione.

Suggerimento

Una singola istanza di Application Insights può essere usata per più tenant di Azure AD B2C. Nella query è quindi possibile filtrare in base al tenant o al nome dei criteri. Per altre informazioni, vedere gli esempi di log in Application Insights .

Per usare un'istanza esistente di Application Insights nella sottoscrizione, seguire questa procedura:

  1. Accedi al portale di Azure.
  2. Assicurarsi di usare la directory Microsoft Entra con la sottoscrizione di Azure e non la directory di Azure AD B2C. Selezionare l'icona Directory e sottoscrizioni nella barra degli strumenti del portale.
  3. Nelle impostazioni del portale | Pagina Directory e sottoscrizioni , trovare la directory Microsoft Entra nell'elenco Nome directory e quindi selezionare Cambia.
  4. Aprire la risorsa di Application Insights creata in precedenza.
  5. Nella pagina Panoramica registrare la chiave di strumentazione

Per creare un'istanza di Application Insights nella sottoscrizione, seguire questa procedura:

  1. Accedi al portale di Azure.
  2. Assicurarsi di usare la directory Microsoft Entra con la sottoscrizione di Azure e non la directory di Azure AD B2C. Selezionare l'icona Directory e sottoscrizioni nella barra degli strumenti del portale.
  3. Nelle impostazioni del portale | Pagina Directory e sottoscrizioni , trovare la directory Microsoft Entra nell'elenco Nome directory e quindi selezionare Cambia.
  4. Selezionare Crea una risorsa nel menu di spostamento a sinistra.
  5. Cercare e selezionare Application Insights, quindi selezionare Crea.
  6. Completare il modulo, selezionare Rivedi e crea e quindi selezionare Crea.
  7. Al termine della distribuzione, selezionare Vai alla risorsa.
  8. Nel menu Configura in Application Insights selezionare Proprietà.
  9. Registrare la CHIAVE DI STRUMENTAZIONE da usare in un passaggio successivo.

Configurare i criteri personalizzati

  1. Aprire il file relying party (RP), ad esempio SignUpOrSignin.xml.

  2. Aggiungere gli attributi seguenti all'elemento <TrustFrameworkPolicy>:

    DeploymentMode="Development"
    UserJourneyRecorderEndpoint="urn:journeyrecorder:applicationinsights"
    
  3. Se non esiste già, aggiungere un <UserJourneyBehaviors> nodo figlio al <RelyingParty> nodo. Deve trovarsi dopo <DefaultUserJourney ReferenceId="UserJourney Id" from your extensions policy, or equivalent (for example:SignUpOrSigninWithAAD" />. Per un ordine completo degli elementi figlio RelyingParty, vedere Informazioni di riferimento sullo schema RelyingParty.

  4. Aggiungere il nodo seguente come figlio dell'elemento <UserJourneyBehaviors>. Assicurarsi di sostituire {Your Application Insights Key} con la chiave di strumentazione di Application Insights registrata in precedenza.

    <JourneyInsights TelemetryEngine="ApplicationInsights" InstrumentationKey="{Your Application Insights Key}" DeveloperMode="true" ClientEnabled="false" ServerEnabled="true" TelemetryVersion="1.0.0" />
    
    • DeveloperMode="true" indica ad ApplicationInsights di accelerare i dati di telemetria tramite la pipeline di elaborazione. Buono per lo sviluppo, ma vincolato a volumi elevati. Nell'ambiente di produzione impostare su DeveloperModefalse.
    • ClientEnabled="true" invia lo script lato client ApplicationInsights per la visualizzazione della pagina di rilevamento e gli errori sul lato client. È possibile visualizzare questa opzione nella tabella browserTimings nel portale di Application Insights. Impostando ClientEnabled= "true", si aggiunge Application Insights allo script di pagina e si ottengono tempi di caricamento delle pagine e chiamate AJAX, conteggi, dettagli delle eccezioni del browser e errori AJAX e conteggi di utenti e sessioni. Questo campo è facoltativo ed è impostato su per false impostazione predefinita.
    • ServerEnabled="true" invia l'elemento JSON UserJourneyRecorder esistente come evento personalizzato ad Application Insights.

    Ad esempio:

    <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. Caricare i criteri.

Visualizza i log in Application Insights

Si verifica un breve ritardo, in genere inferiore a cinque minuti, prima di poter visualizzare nuovi log in Application Insights.

  1. Aprire la risorsa di Application Insights creata nel portale di Azure.
  2. Nella pagina Panoramica selezionare Log.
  3. Aprire una nuova scheda in Application Insights.

Ecco un elenco di query che è possibile usare per visualizzare i log:

Query Descrizione
traces Ottenere tutti i log generati da Azure AD B2C
traces | where timestamp > ago(1d) Ottenere tutti i log generati da Azure AD B2C per l'ultimo giorno.
traces | where message contains "exception" | where timestamp > ago(2h) Ottenere tutti i log con errori delle ultime due ore.
traces | where customDimensions.Tenant == "contoso.onmicrosoft.com" and customDimensions.UserJourney == "b2c_1a_signinandup" Ottenere tutti i log generati da Azure AD B2C contoso.onmicrosoft.com tenant e il percorso utente è b2c_1a_signinandup.
traces | where customDimensions.CorrelationId == "00000000-0000-0000-0000-000000000000" Ottenere tutti i log generati da Azure AD B2C per un ID di correlazione. Sostituire l'ID di correlazione con l'ID di correlazione.

Le voci possono essere lunghe. Per visualizzarle meglio è possibile esportarle in formato CSV.

Per altre informazioni sull'esecuzione di query, vedere Panoramica delle query di log in Monitoraggio di Azure.

Vedere i log nell'estensione di VS Code

È consigliabile installare l'estensione Azure AD B2C per VS Code. Con l'estensione Azure AD B2C, i log vengono organizzati in base al nome del criterio, all'ID di correlazione (application insights presenta la prima cifra dell'ID di correlazione) e al timestamp del log. Questa funzionalità consente di trovare il log pertinente in base al timestamp locale e di visualizzare il percorso utente eseguito da Azure AD B2C.

Nota

La community ha sviluppato l'estensione VS Code per aiutare gli utenti a implementare e gestire soluzioni Azure AD B2C. L'estensione non è supportata da Microsoft e viene resa disponibile rigorosamente così come è.

Impostare l'accesso all'API di Application Insights

Dopo aver configurato Application Insights e aver configurato i criteri personalizzati, è necessario ottenere l'ID API di Application Insights e creare la chiave API. Sia l'ID API che la chiave API vengono usati dall'estensione Azure AD B2C per leggere gli eventi di Application Insights (telemetrie). Le chiavi API devono essere gestite come password. Mantieni il segreto.

Nota

La chiave di strumentazione di Application Insights creata in precedenza viene usata da Azure AD B2C per inviare telemetrie ad Application Insights. Usare la chiave di strumentazione solo nei criteri di Azure AD B2C, non nell'estensione di VS Code.

Per ottenere l'ID e la chiave di Application Insights:

  1. In portale di Azure aprire la risorsa di Application Insights per l'applicazione.

  2. Selezionare Configura e quindi Accesso API.

  3. Copiare l'ID applicazione

  4. Selezionare Crea chiave API

  5. Selezionare la casella Lettura dati di telemetria .

  6. Copiare la chiave prima di chiudere il pannello Crea chiave API e salvarla in un punto sicuro. Se si perde la chiave, è necessario crearne un'altra.

    Screenshot that demonstrates how to create API access key.

Configurare l'estensione Azure AD B2C VS Code

Dopo aver app Azure lication insights API ID e Key, è possibile configurare l'estensione VS Code per leggere i log. L'estensione Azure AD B2C VS Code offre due ambiti per le impostazioni:

  • User Global Impostazioni: Impostazioni che si applicano a livello globale a qualsiasi istanza di VS Code aperta.
  • Impostazioni dell'area di lavoro: Impostazioni archiviati all'interno dell'area di lavoro e si applicano solo all'apertura dell'area di lavoro (usando la cartella aperta di VS Code).
  1. In Esplora tracce di Azure AD B2C fare clic sull'icona Impostazioni.

    Screenshot that demonstrates select the application insights settings.

  2. Specificare l'ID e la chiave di app Azure lication Insights.

  3. Fare clic su Salva

Dopo aver salvato le impostazioni, i log di Application Insights vengono visualizzati nella finestra Traccia di Azure AD B2C (App Insights).

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

Configurare Application Insights nell'ambiente di produzione

Per migliorare le prestazioni dell'ambiente di produzione e migliorare l'esperienza utente, è importante configurare i criteri per ignorare i messaggi non importanti. Usare la configurazione seguente negli ambienti di produzione e non vengono inviati log ad Application Insights.

  1. Impostare l'attributo DeploymentMode di TrustFrameworkPolicy su 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. Impostare l'oggetto DeveloperMode di JourneyInsights su false.

    <UserJourneyBehaviors>
      <JourneyInsights TelemetryEngine="ApplicationInsights" InstrumentationKey="{Your Application Insights Key}" DeveloperMode="false" ClientEnabled="false" ServerEnabled="true" TelemetryVersion="1.0.0" />
    </UserJourneyBehaviors>
    
  3. Caricare e testare i criteri.

Passaggi successivi