Raccogliere i log di Azure Active Directory B2C con Application InsightsCollect Azure Active Directory B2C logs with Application Insights

Questo articolo illustra i passaggi per la raccolta di log da Active Directory B2C (Azure AD B2C) in modo da poter diagnosticare i problemi relativi ai criteri personalizzati.This article provides steps for collecting logs from Active Directory B2C (Azure AD B2C) so that you can diagnose problems with your custom policies. servizio che consente di diagnosticare le eccezioni e di visualizzare i problemi di prestazioni delle applicazioni.Application Insights provides a way to diagnose exceptions and visualize application performance issues. Azure AD B2C supporta una funzionalità per l'invio di dati ad Application Insights.Azure AD B2C includes a feature for sending data to Application Insights.

I log attività dettagliati descritti in questa sezione devono essere abilitati solo durante lo sviluppo dei criteri personalizzati.The detailed activity logs described here should be enabled ONLY during the development of your custom policies.

Avviso

Non impostare DeploymentMode su Development negli ambienti di produzione.Do not set the DeploymentMode to Development in production environments. I log raccolgono tutte le attestazioni inviate da e verso i provider di identità.Logs collect all claims sent to and from identity providers. Gli sviluppatori si assumono la responsabilità di tutti i dati personali raccolti nei log del Application Insights.You as the developer assume responsibility for any personal data collected in your Application Insights logs. Questi log dettagliati vengono raccolti solo quando i criteri vengono inseriti in modalità sviluppatore.These detailed logs are collected only when the policy is placed in DEVELOPER MODE.

Configurare Application InsightsSet up Application Insights

Se non ne è già presente uno, creare un'istanza di Application Insights nella sottoscrizione.If you don't already have one, create an instance of Application Insights in your subscription.

Suggerimento

Per più tenant Azure AD B2C è possibile usare una singola istanza di Application Insights.A single instance of Application Insights can be used for multiple Azure AD B2C tenants. Nella query è quindi possibile filtrare in base al tenant o al nome del criterio.Then in your query, you can filter by the tenant, or policy name. Per ulteriori informazioni, vedere i log in Application Insights esempi.For more information, see the logs in Application Insights samples.

Per usare un'istanza di uscita di Application Insights nella sottoscrizione, seguire questa procedura:To use an exiting instance of Application Insights in your subscription, follow these steps:

  1. Accedere al portale di Azure.Sign in to the Azure portal.
  2. Selezionare il filtro directory + sottoscrizione nel menu in alto e quindi selezionare la directory che contiene la sottoscrizione di Azure (non la directory di Azure ad B2C).Select the Directory + subscription filter in the top menu, and then select the directory that contains your Azure subscription (not your Azure AD B2C directory).
  3. Aprire la risorsa Application Insights creata in precedenza.Open the Application Insights resource that you created earlier.
  4. Nella pagina Overview (panoramica ) e registrare la chiave di strumentazioneOn the Overview page, and record the Instrumentation Key

Per creare un'istanza di Application Insights nella sottoscrizione, attenersi alla seguente procedura:To create an instance of Application Insights in your subscription, follow these steps:

  1. Accedere al portale di Azure.Sign in to the Azure portal.
  2. Selezionare il filtro directory + sottoscrizione nel menu in alto e quindi selezionare la directory che contiene la sottoscrizione di Azure (non la directory di Azure ad B2C).Select the Directory + subscription filter in the top menu, and then select the directory that contains your Azure subscription (not your Azure AD B2C directory).
  3. Selezionare Crea una risorsa nel menu di spostamento a sinistra.Select Create a resource in the left-hand navigation menu.
  4. Cercare e selezionare Application Insights, quindi selezionare Crea.Search for and select Application Insights, then select Create.
  5. Completare il modulo, selezionare Verifica + crea, quindi selezionare Crea.Complete the form, select Review + create, and then select Create.
  6. Al termine della distribuzione, selezionare Vai alla risorsa.Once the deployment has been completed, select Go to resource.
  7. In Configura in Application Insights menu selezionare Proprietà.Under Configure in Application Insights menu, select Properties.
  8. Registrare la chiave di strumentazione per l'uso in un passaggio successivo.Record the INSTRUMENTATION KEY for use in a later step.

Configurare i criteri personalizzatiConfigure the custom policy

  1. Aprire il file relying party (RP), ad esempio SignUpOrSignin.xml.Open the relying party (RP) file, for example SignUpOrSignin.xml.

  2. Aggiungere gli attributi seguenti all'elemento <TrustFrameworkPolicy>:Add the following attributes to the <TrustFrameworkPolicy> element:

    DeploymentMode="Development"
    UserJourneyRecorderEndpoint="urn:journeyrecorder:applicationinsights"
    
  3. Se non esiste già, aggiungere un <UserJourneyBehaviors> nodo figlio al <RelyingParty> nodo.If it doesn't already exist, add a <UserJourneyBehaviors> child node to the <RelyingParty> node. Deve trovarsi dopo <DefaultUserJourney ReferenceId="UserJourney Id" from your extensions policy, or equivalent (for example:SignUpOrSigninWithAAD" /> .It must be located after <DefaultUserJourney ReferenceId="UserJourney Id" from your extensions policy, or equivalent (for example:SignUpOrSigninWithAAD" />.

  4. Aggiungere il nodo seguente come figlio dell'elemento <UserJourneyBehaviors>.Add the following node as a child of the <UserJourneyBehaviors> element. Assicurarsi di sostituire {Your Application Insights Key} con la chiave di strumentazione Application Insights registrata in precedenza.Make sure to replace {Your Application Insights Key} with the Application Insights Instrumentation Key that you recorded earlier.

    <JourneyInsights TelemetryEngine="ApplicationInsights" InstrumentationKey="{Your Application Insights Key}" DeveloperMode="true" ClientEnabled="false" ServerEnabled="true" TelemetryVersion="1.0.0" />
    
    • DeveloperMode="true" indica a ApplicationInsights di accelerare i dati di telemetria attraverso la pipeline di elaborazione.DeveloperMode="true" tells ApplicationInsights to expedite the telemetry through the processing pipeline. Ideale per lo sviluppo, ma vincolato a volumi elevati.Good for development, but constrained at high volumes. In produzione, impostare DeveloperMode su false .In production, set the DeveloperMode to false.
    • ClientEnabled="true" Invia lo script del lato client di ApplicationInsights per tenere traccia degli errori sul lato client e sulla visualizzazione pagina.ClientEnabled="true" sends the ApplicationInsights client-side script for tracking page view and client-side errors. È possibile visualizzarli nella tabella browserTimings nel portale di Application Insights.You can view these in the browserTimings table in the Application Insights portal. Impostando ClientEnabled= "true" , si aggiungono Application Insights allo script di pagina e si ottengono i tempi di caricamento delle pagine e le chiamate AJAX, i conteggi, i dettagli delle eccezioni del browser e degli errori Ajax, nonché i conteggi degli utenti e delle sessioni.By setting ClientEnabled= "true", you add Application Insights to your page script and you get timings of page loads and AJAX calls, counts, details of browser exceptions and AJAX failures, and user and session counts. Questo campo è facoltativo e è impostato su per false impostazione predefinita.This field is optional, and is set to false by default.
    • ServerEnabled="true" invia l'elemento JSON UserJourneyRecorder esistente come evento personalizzato ad Application Insights.ServerEnabled="true" sends the existing UserJourneyRecorder JSON as a custom event to Application Insights.

    Ad esempio:For example:

    <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)" />
      <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.Upload the policy.

Visualizza i log in Application InsightsSee the logs in Application Insights

Si verifica un breve ritardo, in genere meno di cinque minuti, prima che sia possibile visualizzare nuovi log in Application Insights.There is a short delay, typically less than five minutes, before you can see new logs in Application Insights.

  1. Aprire la risorsa di Application Insights creata nel portale di Azure.Open the Application Insights resource that you created in the Azure portal.
  2. Nella pagina Panoramica selezionare log.On the Overview page, select Logs.
  3. Aprire una nuova scheda in Application Insights.Open a new tab in Application Insights.

Di seguito è riportato un elenco di query che è possibile usare per visualizzare i log:Here is a list of queries you can use to see the logs:

QueryQuery DescrizioneDescription
traces Ottenere tutti i log generati da Azure AD B2CGet all of the logs generated by Azure AD B2C
traces | where timestamp > ago(1d) Ottenere tutti i log generati da Azure AD B2C per l'ultimo giorno.Get all of the logs generated by Azure AD B2C for the last day.
traces | where message contains "exception" | where timestamp > ago(2h) Ottenere tutti i log con errori delle ultime due ore.Get all of the logs with errors from the last two hours.
traces | where customDimensions.Tenant == "contoso.onmicrosoft.com" and customDimensions.UserJourney == "b2c_1a_signinandup" Ottenere tutti i log generati dal tenant Azure AD B2C contoso.onmicrosoft.com e il percorso utente è b2c_1a_signinandup.Get all of the logs generated by Azure AD B2C contoso.onmicrosoft.com tenant, and user journey is b2c_1a_signinandup.
traces | where customDimensions.CorrelationId == "00000000-0000-0000-0000-000000000000" Ottenere tutti i log generati da Azure AD B2C per un ID correlazione.Get all of the logs generated by Azure AD B2C for a correlation ID. Sostituire l'ID di correlazione con l'ID di correlazione.Replace the correlation ID with your correlation ID.

Le voci possono essere lunghe.The entries may be long. Per visualizzarle meglio è possibile esportarle in formato CSV.Export to CSV for a closer look.

Per altre informazioni sull'esecuzione di query, vedere Panoramica delle query di log in monitoraggio di Azure.For more information about querying, see Overview of log queries in Azure Monitor.

Vedere i log nell'estensione VS CodeSee the logs in VS Code extension

Si consiglia di installare l' estensione Azure ad B2C per vs code.We recommend you to install the Azure AD B2C extension for VS Code. Con l'estensione Azure AD B2C, i log sono 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.With the Azure AD B2C extension, the logs are organized for you by the policy name, correlation ID (the application insights presents the first digit of the correlation ID), and the log timestamp. Questa funzionalità consente di trovare il log pertinente in base al timestamp locale e di visualizzare il percorso utente come eseguito da Azure AD B2C.This feature helps you to find the relevant log based on the local timestamp and see the user journey as executed by Azure AD B2C.

Nota

La community ha sviluppato l'estensione di Visual Studio Code per Azure AD B2C per aiutare gli sviluppatori di identità.The community has developed the vs code extension for Azure AD B2C to help identity developers. L'estensione non è supportata da Microsoft e viene resa disponibile esclusivamente così com'è.The extension is not supported by Microsoft, and is made available strictly as-is.

Impostare l'accesso all'API Application InsightsSet Application Insights API access

Dopo aver configurato il Application Insights e aver configurato i criteri personalizzati, è necessario ottenere l' ID api Application Insights e creare la chiave API.After you set up the Application Insights, and configure the custom policy, you need to get your Application Insights API ID, and create API Key. Sia l'ID API che la chiave API vengono usati dall'estensione Azure AD B2C per leggere gli eventi di Application Insights (telemetria).Both the API ID and API key are used by Azure AD B2C extension to read the Application Insights events (telemetries). Le chiavi API devono essere gestite come le password.Your API keys should be managed like passwords. Mantenerla segreta.Keep it secret.

Nota

Application Insights chiave di strumentazione che la creazione precedente viene usata da Azure AD B2C per inviare le telemetrie al Application Insights.Application Insights instrumentation key that your create earlier is used by Azure AD B2C to send telemetries to Application Insights. Usare la chiave di strumentazione solo nei criteri di Azure AD B2C e non nell'estensione di Visual Studio Code.You use the instrumentation key only in your Azure AD B2C policy, not in the vs code extension.

Per ottenere Application Insights ID e la chiave:To get Application Insights ID and key:

  1. In portale di Azure aprire la risorsa Application Insights per l'applicazione.In Azure portal, open the Application Insights resource for your application.

  2. Selezionare Impostazioni, quindi selezionare accesso all'API.Select Settings, then select API Access.

  3. Copiare l' ID applicazioneCopy the Application ID

  4. Selezionare Crea chiave APISelect Create API Key

  5. Controllare la casella Leggi telemetria .Check the Read telemetry box.

  6. Copiare la chiave prima di chiudere il pannello Crea chiave API e salvarlo in un punto sicuro.Copy the Key before closing the Create API key blade and save it somewhere secure. Se si perde la chiave, è necessario crearne un'altra.If you lose the key, you'll need to create another.

    Screenshot che illustra come creare una chiave di accesso all'API.

Configurare Azure AD B2C estensione VS CodeSet up Azure AD B2C VS Code extension

A questo punto, l'utente ha applicazione Azure ID e la chiave dell'API Insights, è possibile configurare l'estensione di Visual Studio Code per leggere i log.Now the you have Azure Application insights API ID and Key, you can configure the vs code extension to read the logs. Azure AD B2C VS Code Extension fornisce due ambiti per le impostazioni:Azure AD B2C VS Code extension provides two scopes for settings:

  • Impostazioni globali utente : le impostazioni che si applicano a livello globale a qualsiasi istanza di vs code si apre.User Global Settings - Settings that apply globally to any instance of VS Code you open.
  • Impostazioni area di lavoro : impostazioni archiviate nell'area di lavoro e applicabili solo quando l'area di lavoro viene aperta (usando vs Code cartella aperta).Workspace Settings - Settings stored inside your workspace and only apply when the workspace is opened (using VS Code open folder).
  1. Da Esplora traccia Azure ad B2C fare clic sull'icona delle impostazioni .From the Azure AD B2C Trace explorer, click on the Settings icon.

    Screenshot che illustra come selezionare le impostazioni di Application Insights.

  2. Fornire l' ID e la chiave di applicazione Azure Insights.Provide the Azure Application Insights ID and key.

  3. Fare clic su Save (Salva).Click Save

Dopo aver salvato le impostazioni, i log di Application Insights vengono visualizzati nella finestra traccia Azure ad B2C (App Insights) .After you save the settings the Application insights logs appear on the Azure AD B2C Trace (App Insights) window.

Screenshot dell'estensione Azure AD B2C per VSCODE, che presenta la traccia di applicazione Azure Insights.

Configurare Application Insights nell'ambiente di produzioneConfigure Application Insights in Production

Per migliorare le prestazioni dell'ambiente di produzione e migliorare l'esperienza utente, è importante configurare i criteri per ignorare i messaggi che non sono importanti.To improve your production environment performance and better user experience, it's important to configure your policy to ignore messages that are unimportant. Utilizzare la configurazione seguente per inviare solo messaggi di errore critici al Application Insights.Use the following configuration to send only critical error messages to your Application Insights.

  1. Impostare l' DeploymentMode attributo di TrustFrameworkPolicy su Production .Set the DeploymentMode attribute of the TrustFrameworkPolicy to 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 DeveloperMode di JourneyInsights su false .Set the DeveloperMode of the JourneyInsights to 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.Upload and test your policy.

Passaggi successiviNext steps