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


Внедрение веб-интерфейса Azure Data Explorer в iframe

Область применения: ✅Microsoft Fabric✅Azure Data Explorer

Веб-интерфейс Azure Data Explorer можно внедрить в iframe и разместить на сторонних веб-сайтах. В этой статье описывается внедрение веб-интерфейса Azure Data Explorer в iframe.

Снимок экрана: веб-интерфейс Azure Data Explorer I.

Все функциональные возможности проверяются для специальных возможностей и поддерживают темные и светлые темы на экране.

Внедрение веб-интерфейса в iframe

Добавьте следующий код на веб-сайт:

<iframe
  src="https://dataexplorer.azure.com/?f-IFrameAuth=true&f-UseMeControl=false&workspace=<guid>"
></iframe>

Параметр f-IFrameAuth запроса сообщает веб-интерфейсу не перенаправлять маркер проверки подлинности, а f-UseMeControl=false параметр сообщает веб-интерфейсу , что не отображает всплывающее окно сведений об учетной записи пользователя. Эти действия необходимы, так как веб-сайт размещения отвечает за проверку подлинности.

Параметр workspace=<guid> запроса создает отдельную рабочую область для внедренного iframe. Рабочая область — это единица логики, содержащая вкладки, запросы, параметры и подключения. Задав его уникальное значение, он предотвращает общий доступ к данным между внедренной и не внедренной версией https://dataexplorer.azure.com.

Обработка проверки подлинности

При внедрении веб-интерфейса страница размещения отвечает за проверку подлинности. На следующих схемах описан поток проверки подлинности.

Схема, показывающая поток проверки подлинности для встроенного iframe веб-интерфейса U.

Схема, показывая области, необходимые для внедрения iframe веб-интерфейса U.

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

  1. В приложении прослушивайте сообщение getToken .

    window.addEventListener('message', (event) => {
       if (event.data.signature === "queryExplorer" && event.data.type === "getToken") {
         // CODE-1: Replace this placeholder with code to get the access token from Microsoft Entra ID and
         //         then post a "postToken" message with an access token and an event.data.scope
       }
    })    
    
  2. Определите функцию для сопоставления event.data.scope области Microsoft Entra. Используйте следующую таблицу, чтобы решить, как сопоставить event.data.scope области Microsoft Entra:

    Ресурс event.data.scope Область Microsoft Entra
    Кластер query https://{your_cluster}.{your_region}.kusto.windows.net/.default
    График People.Read People.Read, , User.ReadBasic.AllGroup.Read.All
    Панели мониторинга https://rtd-metadata.azurewebsites.net/user_impersonation https://rtd-metadata.azurewebsites.net/user_impersonation

    Например, следующие области функций сопоставляются на основе сведений в таблице.

        function mapScope(scope) {
            switch(scope) {
                case "query": return ["https://your_cluster.your_region.kusto.windows.net/.default"];
                case "People.Read": return ["People.Read", "User.ReadBasic.All", "Group.Read.All"];
                default: return [scope]
            }
        }
    
  3. Получите маркер доступа JWT из проверки подлинности одностраничного приложения (SPA) для области. Этот код заменяет заполнитель CODE-1.

    Например, можно использовать @azure/MSAL-react для получения маркера доступа. В примере используется функция mapScope , определенная ранее.

    import { useMsal } from "@azure/msal-react";
    const { instance, accounts } = useMsal();
    
    instance.acquireTokenSilent({
      scopes: mapScope(event.data.scope),
      account: accounts[0],
    })
    .then((response) =>
        var accessToken = response.accessToken
        // - CODE-2: Replace this placeholder with code to post a "postToken" message with an access token and an event.data.scope
    )
    

    Внимание

    Имя участника-пользователя (UPN) можно использовать только для проверки подлинности, субъекты-службы не поддерживаются.

  4. Разместите сообщение postToken с маркером доступа. Этот код заменяет заполнитель CODE-2:

         iframeWindow.postMessage({
             "type": "postToken",
             "message": // the access token your obtained earlier
             "scope": // event.data.scope as passed to the "getToken" message
         }, '*');
       }
    

    Внимание

    Окно размещения должно обновить маркер до истечения срока действия, отправив новое сообщение postToken с обновленными маркерами. В противном случае после истечения срока действия маркеров вызовы служб завершаются сбоем.

Совет

В нашем примере проекта можно просмотреть приложение , использующее проверку подлинности.

Внедрение панелей мониторинга

Чтобы внедрить панель мониторинга, необходимо установить связь доверия между приложением Microsoft Entra узла и службой панели мониторинга Azure Data Explorer (служба метаданных RTD).

  1. Выполните действия, описанные в разделе "Выполнение проверки подлинности одностраничного приложения (SPA).

  2. Откройте портал Azure и убедитесь, что вы вошли в правильный клиент. В правом верхнем углу проверьте удостоверение, используемое для входа на портал.

  3. В области ресурсов выберите идентификатор Microsoft Entra ID> Регистрация приложений.

  4. Найдите приложение, которое использует поток от имени и откройте его.

  5. Выберите манифест.

  6. Выберите requiredResourceAccess.

  7. В манифесте добавьте следующую запись:

      {
        "resourceAppId": "00001111-aaaa-2222-bbbb-3333cccc4444",
        "resourceAccess": [
            {
                "id": "388e2b3a-fdb8-4f0b-ae3e-0692ca9efc1c",
                "type": "Scope"
            }
        ]
      }
    
    • 00001111-aaaa-2222-bbbb-3333cccc4444 — это идентификатор приложения службы панели мониторинга Azure Data Explorer.
    • 388e2b3a-fdb8-4f0b-ae3e-0692ca9efc1c — это разрешение user_impersonation.
  8. Сохраните изменения в манифесте.

  9. Выберите разрешения API и проверьте, есть новая запись: служба метаданных RTD.

  10. В Microsoft Graph добавьте разрешения для People.Read, User.ReadBasic.Allа также Group.Read.All.

  11. В Azure PowerShell добавьте следующий новый субъект-службу для приложения:

    New-MgServicePrincipal -AppId 00001111-aaaa-2222-bbbb-3333cccc4444
    

    Если возникла Request_MultipleObjectsWithSameKeyValue ошибка, это означает, что приложение уже находится в клиенте, указывающее, что оно было успешно добавлено.

  12. На странице разрешений API выберите предоставить согласие администратора на согласие для всех пользователей.

Примечание.

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

 <iframe src="https://dataexplorer.azure.com/dashboards?[feature-flags]" />

Где [feature-flags] находится:

"f-IFrameAuth": true,
"f-PersistAfterEachRun": true,
"f-Homepage": false,
"f-ShowPageHeader": false,
"f-ShowNavigation": false,
"f-DisableExploreQuery": false,

Флаги функций

Внимание

Флаг f-IFrameAuth=true необходим для работы iframe. Другие флаги являются необязательными.

В приложении размещения может потребоваться управлять определенными аспектами взаимодействия с пользователем. Например, скрытие области подключения или отключение подключения к другим кластерам. В этом сценарии веб-обозреватель поддерживает флаги компонентов.

Флаг компонента можно использовать в URL-адресе в качестве параметра запроса. Чтобы отключить добавление других кластеров, используйте https://dataexplorer.azure.com/?f-ShowConnectionButtons=false в приложении размещения.

Параметр Описание: Значение по умолчанию
f-ShowShareMenu Отображение элемента меню общего доступа true
f-ShowConnectionButtons Отображение кнопки добавления подключения для добавления нового кластера true
f-ShowOpenNewWindowButton Отображение открытого в веб-пользовательском интерфейсе кнопки, которая открывает новое окно браузера и указывает на https://dataexplorer.azure.com нужный кластер и базу данных в области false
f-ShowFileMenu Показать меню файла (скачать, вкладку, содержимое и т. д.) true
f-ShowToS Показать ссылку на условия службы Для Azure Data Explorer из диалогового окна параметров true
f-ShowPersona Отображение имени пользователя в меню параметров в правом верхнем углу. true
f-UseMeControl Отображение сведений об учетной записи пользователя true
f-IFrameAuth Если значение true, веб-обозреватель ожидает, что iframe обрабатывает проверку подлинности и предоставляет маркер через сообщение. Этот параметр необходим для сценариев iframe. false
f-PersistAfterEachRun Обычно браузеры сохраняются в событии выгрузки. Однако событие выгрузки не всегда активируется при размещении в iframe. Этот флаг активирует сохраняющееся локальное событие состояния после каждого выполнения запроса. Это ограничивает любые потери данных, которые могут возникнуть, чтобы повлиять только на новый текст запроса, который никогда не выполнялся. false
f-ShowSmoothIngestion Если задано значение true, при щелчке правой кнопкой мыши на базе данных отображается мастер приема true
f-RefreshConnection Если значение true, всегда обновляет схему при загрузке страницы и никогда не зависит от локального хранилища. false
f-ShowPageHeader Если значение true, отображает заголовок страницы, включающий заголовок и параметры Azure Data Explorer. true
f-HideConnectionPane Если значение true, левая область подключения не отображается false
f-SkipMonacoFocusOnInit Исправлена проблема с фокусом при размещении на iframe false
f-домашняя страница Включите домашнюю страницу и перенаправляя новых пользователей на нее true
f-ShowNavigation Если значение true, отображает область навигации слева true
f-DisableDashboardTopBar Если значение true, скрывает верхнюю панель на панели мониторинга false
f-DisableNewDashboard ЕСЛИ значение true, скрывает параметр добавления новой панели мониторинга false
f-DisableNewDashboard Если значение true, скрывает параметр поиска в списке панелей мониторинга false
f-DisableDashboardEditMenu Если значение true, скрывает параметр для редактирования панели мониторинга false
f-DisableDashboardFileMenu Если значение true, скрывает кнопку меню файла на панели мониторинга false
f-DisableDashboardShareMenu Если значение true, скрывает кнопку меню общего доступа на панели мониторинга false
f-DisableDashboardDelete Если значение true, скрывает кнопку удаления панели мониторинга false
f-DisableTileRefresh ЕСЛИ значение true, отключает кнопку обновления плиток на панели мониторинга false
f-DisableDashboardAutoRefresh Если значение true, отключает автоматическое обновление плиток на панели мониторинга false
f-DisableExploreQuery Если значение true, отключает кнопку "Исследовать запрос" плиток false
f-DisableCrossFiltering ЕСЛИ значение true, отключает функцию перекрестной фильтрации на панелях мониторинга false
f-HideDashboardParametersBar Если значение true, скрывает панель параметров на панели мониторинга false