Внедрение веб-интерфейса Azure Data Explorer в iframe
Область применения: ✅Microsoft Fabric✅Azure Data Explorer
Веб-интерфейс Azure Data Explorer можно внедрить в iframe и разместить на сторонних веб-сайтах. В этой статье описывается внедрение веб-интерфейса Azure Data Explorer в iframe.
Все функциональные возможности проверяются для специальных возможностей и поддерживают темные и светлые темы на экране.
Внедрение веб-интерфейса в 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
.
Обработка проверки подлинности
При внедрении веб-интерфейса страница размещения отвечает за проверку подлинности. На следующих схемах описан поток проверки подлинности.
Чтобы обрабатывать проверку подлинности, выполните следующие действия.
В приложении прослушивайте сообщение 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 } })
Определите функцию для сопоставления
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.All
Group.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] } }
Получите маркер доступа 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) можно использовать только для проверки подлинности, субъекты-службы не поддерживаются.
Разместите сообщение 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).
Выполните действия, описанные в разделе "Выполнение проверки подлинности одностраничного приложения (SPA).
Откройте портал Azure и убедитесь, что вы вошли в правильный клиент. В правом верхнем углу проверьте удостоверение, используемое для входа на портал.
В области ресурсов выберите идентификатор Microsoft Entra ID> Регистрация приложений.
Найдите приложение, которое использует поток от имени и откройте его.
Выберите манифест.
Выберите requiredResourceAccess.
В манифесте добавьте следующую запись:
{ "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.
Сохраните изменения в манифесте.
Выберите разрешения API и проверьте, есть новая запись: служба метаданных RTD.
В Microsoft Graph добавьте разрешения для
People.Read
,User.ReadBasic.All
а такжеGroup.Read.All
.В Azure PowerShell добавьте следующий новый субъект-службу для приложения:
New-MgServicePrincipal -AppId 00001111-aaaa-2222-bbbb-3333cccc4444
Если возникла
Request_MultipleObjectsWithSameKeyValue
ошибка, это означает, что приложение уже находится в клиенте, указывающее, что оно было успешно добавлено.На странице разрешений 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 |