Recopilación de registros de Azure Active Directory B2C con Application Insights

Antes de comenzar, use el selector Elección de un tipo de directiva para elegir el tipo de directiva que va a configurar. Azure Active Directory B2C ofrece dos métodos para definir el modo en que los usuarios interactúan con las aplicaciones: por medio de flujos de usuario predefinidos o de directivas personalizadas totalmente configurables. Los pasos necesarios en este artículo son diferentes para cada método.

Esta característica está disponible solo para directivas personalizadas. En los pasos de configuración, elija Directiva personalizada en el selector anterior.

En este artículo se proporcionan los pasos para recopilar registros de Active Directory B2C (Azure AD B2C) de forma que pueda diagnosticar problemas con sus directivas personalizadas. Application Insights proporciona un modo de diagnosticar excepciones y visualizar problemas de rendimiento de la aplicación. Azure AD B2C incluye una característica para enviar datos a Application Insights.

Los registros de actividad detallados aquí SOLO deben estar habilitados durante el desarrollo de las directivas personalizadas.

Advertencia

No establezca DeploymentMode en Development en entornos de producción. Los registros recopilan todas las notificaciones que se envían a los proveedores de identidad y se reciben de estos. Usted, como desarrollador, asume la responsabilidad de los datos personales recopilados en los registros de Application Insights. Estos registros detallados solo se recopilan cuando la directiva se coloca en MODO DE DESARROLLADOR.

Configuración de Application Insights

Si aún no tiene una, cree una instancia de Application Insights en su suscripción.

Sugerencia

Se puede usar una sola instancia de Application Insights para varios inquilinos de Azure AD B2C. Después, en la consulta, puede filtrar por inquilino o nombre de directiva. Para obtener más información, consulte los ejemplos de registros en Application Insights.

Para usar una instancia existente de Application Insights en su suscripción, siga estos pasos:

  1. Inicie sesión en Azure Portal.
  2. Asegúrese de que usa el directorio de Microsoft Entra que tiene la suscripción de Azure y no el de Azure AD B2C. Seleccione el icono Directorios y suscripciones en la barra de herramientas del portal.
  3. En la página Configuración del portal | Directorios y suscripciones, busque el directorio de Microsoft Entra en la lista Nombre del directorio y, a continuación, seleccione Cambiar.
  4. Abra el recurso de Application Insights que creó anteriormente.
  5. En la página Información general, anote la Clave de instrumentación.

Para crear una instancia de Application Insights en su suscripción, siga estos pasos:

  1. Inicie sesión en Azure Portal.
  2. Asegúrese de que usa el directorio de Microsoft Entra que tiene la suscripción de Azure y no el de Azure AD B2C. Seleccione el icono Directorios y suscripciones en la barra de herramientas del portal.
  3. En la página Configuración del portal | Directorios y suscripciones, busque el directorio de Microsoft Entra en la lista Nombre del directorio y, a continuación, seleccione Cambiar.
  4. Seleccione Crear un recurso en el panel de navegación izquierdo.
  5. Busque y seleccione Application Insights y, luego, seleccione Crear.
  6. Complete el formulario, seleccione Revisar y crear y seleccione Crear.
  7. Cuando finalice la implementación, seleccione Ir al recurso.
  8. En Configurar, en el menú de Application Insights, seleccione Propiedades.
  9. Registre la CLAVE DE INSTRUMENTACIÓN para su uso en un paso posterior.

Configuración de la directiva personalizada

  1. Abra el archivo de usuario de confianza (RP), por ejemplo SignUpOrSignin.xml.

  2. Agregue los siguientes atributos al elemento <TrustFrameworkPolicy>:

    DeploymentMode="Development"
    UserJourneyRecorderEndpoint="urn:journeyrecorder:applicationinsights"
    
  3. Si aún no existe, agregue un nodo secundario <UserJourneyBehaviors> al nodo <RelyingParty>. Debe colocarse después de <DefaultUserJourney ReferenceId="UserJourney Id" from your extensions policy, or equivalent (for example:SignUpOrSigninWithAAD" />. Consulte Referencia del esquema RelyingParty para obtener un orden completo de los elementos secundarios RelyingParty.

  4. Agregue el siguiente nodo como nodo secundario del elemento <UserJourneyBehaviors>. Asegúrese de reemplazar {Your Application Insights Key} por la Clave de instrumentación de Application Insights que registro anteriormente.

    <JourneyInsights TelemetryEngine="ApplicationInsights" InstrumentationKey="{Your Application Insights Key}" DeveloperMode="true" ClientEnabled="false" ServerEnabled="true" TelemetryVersion="1.0.0" />
    
    • DeveloperMode="true" indica a Application Insights que acelere la telemetría a través de la canalización de procesamiento. Es bueno para el desarrollo, pero está restringido en volúmenes elevados. En producción, establezca DeveloperMode en false.
    • ClientEnabled="true" envía el script del lado cliente de ApplicationInsights para realizar un seguimiento de la vista de página y de los errores del lado cliente. Puede verlo en la tabla browserTimings en el portal de Application Insights. Mediante el establecimiento de ClientEnabled= "true", agrega Application Insights al script de la página y obtiene los intervalos de carga de página y de las llamadas AJAX, los recuentos, los detalles de las excepciones del explorador y los errores de AJAX, así como los recuentos de usuarios y sesiones. Este campo es opcional y está establecido en false de forma predeterminada.
    • ServerEnabled="true" envía el JSON UserJourneyRecorder como evento personalizado a Application Insights.

    Por ejemplo:

    <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. Cargue la directiva.

Visualización de registros en Application Insights

Hay un breve retraso, normalmente inferior a cinco minutos, antes de que pueda ver nuevos registros en Application Insights.

  1. Abra el recurso de Application Insights que ha creado en Azure Portal.
  2. En la página Información general, seleccione Registros.
  3. Abra una nueva pestaña en Application Insights.

A continuación se muestra una lista de consultas que puede usar para ver los registros:

Consultar Descripción
traces Obtiene todos los registros generados por Azure AD B2C.
traces | where timestamp > ago(1d) Obtiene todos los registros generados por Azure AD B2C para el último día.
traces | where message contains "exception" | where timestamp > ago(2h) Obtiene todos los registros con errores de las últimas dos horas.
traces | where customDimensions.Tenant == "contoso.onmicrosoft.com" and customDimensions.UserJourney == "b2c_1a_signinandup" Obtiene todos los registros generados por el inquilino contoso.onmicrosoft.com de Azure AD B2C, y el recorrido del usuario es b2c_1a_signinandup.
traces | where customDimensions.CorrelationId == "00000000-0000-0000-0000-000000000000" Obtiene todos los registros generados por Azure AD B2C para un identificador de correlación. Reemplace CorrelationId por el identificador de correlación.

Las entradas pueden ser largas. Exporte a un archivo CSV para realizar un examen más detallado.

Para más información sobre las consultas, vea Introducción a las consultas de registro en Azure Monitor.

Consulte los registros en la extensión de VS Code

Es aconsejable que instale la extensión de Azure AD B2C para VS Code. Con la extensión de Azure AD B2C, el nombre de directiva organiza los registros se organizan por nombre de directiva, identificador de correlación (Application Insights presenta el primer dígito del identificador de correlación) y la marca de tiempo del registro. Esta característica le ayuda a encontrar el registro correspondiente en función de la marca de tiempo local y a ver el recorrido del usuario tal como lo ha ejecutado Azure AD B2C.

Nota:

La comunidad ha desarrollado la extensión VS Code para ayudar a las personas a implementar y mantener soluciones de Azure AD B2C. La extensión no es compatible con Microsoft y se pone a disposición estrictamente como es.

Establecimiento del acceso a Application Insights API

Después de configurar Application Insights y configurar la directiva personalizada, debe obtener el identificador de Application Insights API y crear la clave de API. La extensión de Azure AD B2C usa tanto el identificador de la API como la clave de API se para leer los eventos de Application Insights (datos de telemetría). Las claves de API deben administrarse como las contraseñas. Manténgala en secreto.

Nota:

Azure AD B2C utiliza la clave de instrumentación de Application Insights que creó anteriormente para enviar datos de telemetría a Application Insights. La clave de instrumentación solo se usa en la directiva de Azure AD B2C, no en la extensión de VS Code.

Para obtener el identificador y la clave de Application Insights:

  1. En Azure Portal, abra el recurso Application Insights de la aplicación.

  2. Seleccione Configurar y después Acceso de API.

  3. Copie el identificador de la aplicación.

  4. Seleccione Create API Key (Crear clave de API).

  5. Active la casilla Read telemetry (Leer telemetría).

  6. Copie la clave antes de cerrar la hoja Create API Key (Crear clave de API) y guárdela en un lugar seguro. Si pierde la clave, debe crear otra.

    Screenshot that demonstrates how to create API access key.

Configuración de la extensión VS Code de Azure AD B2C

Ahora que el identificador y la clave de Azure Application Insights API, puede configurar la extensión de VS Code para leer los registros. La extensión VS Code de Azure AD B2C proporciona dos ámbitos para la configuración:

  • Configuración global de usuario: configuración que se aplica globalmente a cualquier instancia de VS Code que se abra.
  • Configuración del área de trabajo: la configuración se almacena en el área de trabajo y solo se aplica cuando se abre el área de trabajo (mediante la carpeta abierta de VS Code).
  1. En el explorador de seguimiento de Azure AD B2C, haga clic en el icono Configuración.

    Screenshot that demonstrates select the application insights settings.

  2. Proporcione el identificador y la clave de Azure Application Insights.

  3. Haga clic en Guardar

Después de guardar la configuración los registros de Application Insights aparecen en la ventana de seguimiento de Azure AD B2C (App Insights).

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

Configuración de Application Insights en producción

Para mejorar el rendimiento del entorno de producción y mejorar la experiencia del usuario, es importante configurar la directiva para omitir los mensajes que no son importantes. Use la siguiente configuración en entornos de producción y no se envía ningún registro a la información de la aplicación.

  1. Establezca el atributo DeploymentMode de TrustFrameworkPolicy en 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. Establezca DeveloperMode de JourneyInsights en false.

    <UserJourneyBehaviors>
      <JourneyInsights TelemetryEngine="ApplicationInsights" InstrumentationKey="{Your Application Insights Key}" DeveloperMode="false" ClientEnabled="false" ServerEnabled="true" TelemetryVersion="1.0.0" />
    </UserJourneyBehaviors>
    
  3. Cargue y pruebe la directiva.

Pasos siguientes