Сбор журналов Azure Active Directory B2C с помощью Application Insights

Для начала с помощью селектора Choose a policy type (Выбрать тип политики) выберите тип пользовательской политики. Azure Active Directory B2C предлагает два метода определения способа взаимодействия пользователей с вашими приложениями: с помощью предопределенных потоков пользователей или полностью настраиваемых пользовательских политик. Действия, которые необходимо выполнить, отличаются для каждого метода.

Эта возможность доступна только для пользовательских политик. Чтобы ознакомиться с этапами установки, в предыдущем селекторе выберите Настраиваемая политика.

В этой статье приводятся действия по сбору журналов из Active Directory B2C (Azure AD B2C), с помощью которых вы сможете диагностировать неполадки в пользовательских политиках. Application Insights позволяет диагностировать исключения и визуализировать проблемы производительности в приложениях. Служба Azure AD B2C содержит функцию отправки данных в Application Insights.

Подробные журналы действий, описанные здесь, должны быть включены только во время разработки пользовательских политик.

Предупреждение

Не устанавливайте для параметра DeploymentMode значение Development в рабочих средах. В журналах регистрируются все утверждения, отправляемые и принимаемые поставщиками удостоверений. Разработчик несет ответственность за личные данные, собранные в журналах Application Insights. Эти подробные журналы собираются только в том случае, если политика переходит в режим разработчика.

Настройка Application Insights

Создайте экземпляр Application Insights в подписке, если он еще не создан.

Совет

Один экземпляр Application Insights можно использовать для нескольких арендаторов Azure AD B2C. Затем в запросе можно выполнить фильтрацию по арендатору или имени политики. Дополнительные сведения см. в примерах журналов в Application Insights.

Чтобы использовать существующий экземпляр Application Insights в подписке, выполните указанные ниже действия.

  1. Войдите на портал Azure.
  2. Убедитесь, что вы используете каталог Microsoft Entra, имеющий подписку Azure, а не каталог Azure AD B2C. На панели инструментов портала выберите значок Каталоги и подписки.
  3. Параметры портала | На странице каталогов и подписок найдите каталог Microsoft Entra в списке имен каталогов, а затем выберите переключатель.
  4. Откройте ресурс Application Insights, который вы создали ранее.
  5. На странице Обзор запишите ключ инструментирования.

Чтобы создать экземпляр Application Insights в подписке, сделайте следующее:

  1. Войдите на портал Azure.
  2. Убедитесь, что вы используете каталог Microsoft Entra, имеющий подписку Azure, а не каталог Azure AD B2C. На панели инструментов портала выберите значок Каталоги и подписки.
  3. Параметры портала | На странице каталогов и подписок найдите каталог Microsoft Entra в списке имен каталогов, а затем выберите переключатель.
  4. Выберите Создать ресурс в меню навигации слева.
  5. Найдите и выберите Application Insights, а затем выберите Создать.
  6. Заполните форму, выберите Просмотр и создание, а затем выберите Создать.
  7. После завершения развертывания выберите "Перейти к ресурсу".
  8. В меню Настройка в Application Insights выберите пункт Свойства.
  9. Запишите ключ инструментирования для использования в следующем шаге.

Настройка пользовательской политики

  1. Откройте файл проверяющей стороны, например SignUpOrSignin.xml.

  2. Добавьте следующие атрибуты в элемент <TrustFrameworkPolicy>.

    DeploymentMode="Development"
    UserJourneyRecorderEndpoint="urn:journeyrecorder:applicationinsights"
    
  3. Если он еще не существует, добавьте дочерний узел <UserJourneyBehaviors> в узел <RelyingParty>. Он должен быть расположен после <DefaultUserJourney ReferenceId="UserJourney Id" from your extensions policy, or equivalent (for example:SignUpOrSigninWithAAD" />. Дополнительные сведения см . в справочнике по схеме RelyingParty для полного порядка дочерних элементов RelyingParty .

  4. Добавьте следующий узел в качестве дочернего узла элемента <UserJourneyBehaviors>. Обязательно замените {Your Application Insights Key} на ключ инструментирования Application Insights, записанный ранее.

    <JourneyInsights TelemetryEngine="ApplicationInsights" InstrumentationKey="{Your Application Insights Key}" DeveloperMode="true" ClientEnabled="false" ServerEnabled="true" TelemetryVersion="1.0.0" />
    
    • Если параметр имеет значение DeveloperMode="true", Application Insights будет передавать данные телеметрии через конвейер обработки. Это подходит для разработки, но неэффективно при больших объемах передаваемых данных. В рабочей среде задайте для DeveloperMode значение false.
    • Параметр ClientEnabled="true" отправляет Application Insights клиентский скрипт для отслеживания представления страницы и ошибок на стороне клиента. Это можно просмотреть в таблице browserTimings на портале application Аналитика. Задав ClientEnabled= "true", вы добавите Application Insights в скрипт страницы и узнаете время загрузки страницы и вызовов AJAX, сведения об исключениях браузера, ошибках AJAX и их количестве, а также количество пользователей и сеансов. Это поле является необязательным. По умолчанию для него задано значение false.
    • Параметр ServerEnabled="true" отправляет существующие данные JSON UserJourneyRecorder как пользовательское событие в Application Insights.

    Например:

    <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. Отправьте политику.

Просмотр журналов в Application Insights

Существует небольшая задержка, как правило, менее чем за пять минут, прежде чем вы увидите новые журналы в Приложении Аналитика.

  1. Откройте созданный ресурс Application Insights на портале Azure.
  2. На странице Обзор выберите Журналы.
  3. Откройте новую вкладку в Application Insights

Ниже приведен список запросов, которые можно использовать для просмотра журналов:

Query Description
traces Получение всех журналов, созданных Azure AD B2C.
traces | where timestamp > ago(1d) Получение всех журналов, созданных Azure AD B2C за последний день.
traces | where message contains "exception" | where timestamp > ago(2h) Получение всех журналов с ошибками за последние два часа.
traces | where customDimensions.Tenant == "contoso.onmicrosoft.com" and customDimensions.UserJourney == "b2c_1a_signinandup" Получение всех журналов, созданных арендатором Azure AD B2C contoso.onmicrosoft.com, а также пути взаимодействия пользователя b2c_1a_signinandup.
traces | where customDimensions.CorrelationId == "00000000-0000-0000-0000-000000000000" Получение всех журналов, созданных Azure AD B2C для идентификатора корреляции. Используйте нужное значение идентификатора корреляции.

Записи могут быть длинными. Выполните экспорт в CSV-файл, чтобы изучить их подробнее.

Дополнительные сведения о запросах см. в статье Общие сведения о запросах журналов в Azure Monitor.

Просмотр журналов в расширении VS Code

Рекомендуется установить расширение Azure AD B2C для VS Code. При использовании расширения Azure AD B2C журналы упорядочиваются по имени политики, идентификатору корреляции (Application Insights представляет первую цифру идентификатора корреляции) и метке времени журнала. Эта функция позволяет найти соответствующий журнал на основе локальной метки времени и отследить путь взаимодействия пользователя в рамках Azure AD B2C.

Примечание.

Сообщество разработало расширение VS Code, чтобы помочь людям реализовать и поддерживать решения Azure AD B2C. Это расширение не поддерживается корпорацией Майкрософт и предоставляется исключительно "как есть".

Настройка доступа через API Application Insights

После настройки Application Insights и пользовательской политики необходимо получить идентификатор API Application Insights и создать ключ API. Идентификатор API и ключ API используются расширением Azure AD B2C для чтения событий Application Insights (данных телеметрии). С ключами API нужно обращаться аналогично паролям. Держите его в секрете.

Примечание.

Созданный вами ранее ключ инструментирования Application Insights используется Azure AD B2C для отправки данных телеметрии в Application Insights. Ключ инструментирования используется только в политике Azure AD B2C, а не в расширении VS Code.

Чтобы получить идентификатор Application Insights и ключ, сделайте следующее:

  1. На портале Azure откройте ресурс Application Insights для своего приложения.

  2. Выберите Настроить, а затем выберите Доступ через API.

  3. Скопируйте идентификатор приложения.

  4. Выберите Создание ключа API.

  5. Установите флажок Читать телеметрию.

  6. Скопируйте ключ, затем закройте колонку создания ключа API и сохраните его в безопасном месте. Если вы потеряете ключ, необходимо создать другой.

    Screenshot that demonstrates how to create API access key.

Настройка расширения Azure AD B2C для VS Code

Теперь, когда вы приложение Azure идентификатор API аналитики и ключ, можно настроить расширение VS Code для чтения журналов. Расширение Azure AD B2C для VS Code предоставляет две области для параметров:

  • Глобальные параметры пользователя — параметры, которые применяются глобально к любому экземпляру VS Code, который вы открываете.
  • Параметры рабочей области — параметры, хранящиеся в рабочей области и применяемые только при открытии рабочей области (с помощью команды VS Code Открыть папку).
  1. В обозревателе трассировки Azure AD B2C щелкните значок Параметры.

    Screenshot that demonstrates select the application insights settings.

  2. Укажите идентификатор и ключ Azure Application Insights.

  3. Щелкните Сохранить.

После сохранения параметров журналы Application Insights отображаются в окне трассировки Azure AD B2C (приложение Аналитика).

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

Настройка Application Insights в рабочей среде

Чтобы повысить производительность рабочей среды и улучшить взаимодействие с пользователем, важно настроить политику так, чтобы она игнорировала неважные сообщения. Используйте следующую конфигурацию в рабочих средах и журналы не отправляются в аналитику приложений.

  1. Установите для атрибута DeploymentMode в TrustFrameworkPolicy значение 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. Задайте для параметра DeveloperMode в JourneyInsights значение false.

    <UserJourneyBehaviors>
      <JourneyInsights TelemetryEngine="ApplicationInsights" InstrumentationKey="{Your Application Insights Key}" DeveloperMode="false" ClientEnabled="false" ServerEnabled="true" TelemetryVersion="1.0.0" />
    </UserJourneyBehaviors>
    
  3. Отправьте и протестируйте политику.

Следующие шаги