Поделиться через


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

Прежде чем начать, используйте селектор типа политики в верхней части этой страницы, чтобы выбрать тип политики, которую вы настроите. 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 в подписке.

Подсказка

Для нескольких клиентов Azure AD B2C можно использовать один экземпляр Application Insights. Затем в запросе можно отфильтровать по имени клиента или политики. Дополнительные сведения см. в журналах примеров 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. Откройте файл доверяющей стороны (RP), например 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" ConnectionString="{Your Application Insights Connection String}" DeveloperMode="true" ClientEnabled="false" ServerEnabled="true" TelemetryVersion="1.0.0" />
    
    • DeveloperMode="true" Указывает ApplicationInsights ускорить обработку телеметрии через конвейер обработки. Хорошо подходит для разработки, но имеет ограничения при больших объемах. Установите DeveloperMode в false в рабочей среде.
    • ClientEnabled="true" отправляет клиентский скрипт ApplicationInsights для отслеживания просмотров страниц и ошибок на клиентской стороне. Это можно просмотреть в таблице browserTimings на портале Application Insights. Задав параметр 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" ConnectionString="{Your Application Insights Connection String}" DeveloperMode="true" ClientEnabled="false" ServerEnabled="true" TelemetryVersion="1.0.0" />
      </UserJourneyBehaviors>
      ...
    </TrustFrameworkPolicy>
    
  5. Отправьте политику.

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

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

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

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

Запрос Описание
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 == "aaaa0000-bb11-2222-33cc-444444dddddd" Получите все логи, созданные 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. Расширение не поддерживается компанией Майкрософт и доступно строго as-is.

Настройка доступа к 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" и сохраните его в надежном месте. Если вы потеряете ключ, необходимо создать другой.

    Снимок экрана: создание ключа доступа к API.

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

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

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

    Снимок экрана, демонстрирующий выбор параметров Application Insights.

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

  3. Нажмите кнопку "Сохранить"

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

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

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

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

  1. Задайте значение Production для атрибута TrustFrameworkPolicy.

    <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. Задайте значение false для свойства JourneyInsights.

    <UserJourneyBehaviors>
      <JourneyInsights TelemetryEngine="ApplicationInsights" ConnectionString="{Your Application Insights Connection String}" DeveloperMode="false" ClientEnabled="false" ServerEnabled="true" TelemetryVersion="1.0.0" />
    </UserJourneyBehaviors>
    
  3. Загрузите и проверьте политику.

Дальнейшие шаги