Vložení webového uživatelského rozhraní Azure Data Exploreru do prvku iframe

Platí pro: ✅Microsoft FabricAzure Data Explorer

Webové uživatelské rozhraní Azure Data Exploreru je možné vložit do prvku iframe a hostovat ho na webech třetích stran. Tento článek popisuje, jak vložit webové uživatelské rozhraní Azure Data Exploreru do prvku iframe.

Snímek obrazovky webového uživatelského rozhraní Azure Data Exploreru

Všechny funkce jsou testovány pro přístupnost a podporují tmavé a světlé motivy na obrazovce.

Jak vložit webové uživatelské rozhraní do prvku iframe

Na svůj web přidejte následující kód:

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

Parametr f-IFrameAuth dotazu říká webovému uživatelskému rozhraní , aby nepřesměrovál , aby získal ověřovací token, a f-UseMeControl=false parametr říká webovému uživatelskému rozhraní , aby nezobsadl automaticky otevírané okno s informacemi o uživatelském účtu. Tyto akce jsou nezbytné, protože hostující web zodpovídá za ověřování.

Parametr workspace=<guid> dotazu vytvoří pro vložený prvek iframe samostatný pracovní prostor. Pracovní prostor je jednotka logiky, která obsahuje karty, dotazy, nastavení a připojení. Nastavením na jedinečnou hodnotu zabrání sdílení dat mezi vloženou a neintegrovanou verzí https://dataexplorer.azure.com.

Zpracování ověřování

Při vkládání webového uživatelského rozhraní zodpovídá za ověřování hostitelská stránka. Následující diagramy popisují tok ověřování.

Diagram znázorňující tok ověřování pro vložený iframe webového uživatelského rozhraní

Diagram znázorňující obory potřebné pro vložení prvku Iframe webového rozhraní

K zpracování ověřování použijte následující postup:

  1. V aplikaci si poslechněte zprávu 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. Definujte funkci, která mapuje event.data.scope obor Microsoft Entra. V následující tabulce se můžete rozhodnout, jak se mapovat event.data.scope na obory Microsoft Entra:

    Prostředek event.data.scope Rozsah Microsoft Entra
    Cluster query https://{your_cluster}.{your_region}.kusto.windows.net/.default
    Graf People.Read People.Read, , User.ReadBasic.AllGroup.Read.All
    Řídicí panely https://rtd-metadata.azurewebsites.net/user_impersonation https://rtd-metadata.azurewebsites.net/user_impersonation

    Například následující funkce mapuje obory na základě informací v tabulce.

        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. Získejte přístupový token JWT z ověřování Provést jednostránkové aplikace (SPA) pro obor. Tento kód nahrazuje zástupný kód CODE-1.

    Můžete například použít @azure/MSAL-react k získání přístupového tokenu. V příkladu se používá funkce mapScope , kterou jste definovali dříve.

    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
    )
    

    Důležité

    K ověřování můžete použít pouze hlavní název uživatele (UPN), instanční objekty se nepodporují.

  4. Publikujte zprávu postToken s přístupovým tokenem. Tento kód nahrazuje zástupný kód CODE-2:

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

    Důležité

    Hostitelské okno musí token před vypršením platnosti aktualizovat odesláním nové zprávy postToken s aktualizovanými tokeny. Jinak po vypršení platnosti tokenů se volání služby nezdaří.

Tip

V našem ukázkovém projektu můžete zobrazit aplikaci , která používá ověřování.

Vložení řídicích panelů

Pokud chcete vložit řídicí panel, musí být mezi aplikací Microsoft Entra hostitele a službou řídicího panelu Azure Data Exploreru (RTD Metadata Service) vytvořen vztah důvěryhodnosti.

  1. Postupujte podle kroků v ověřování jednostránkové aplikace (SPA).

  2. Otevřete Azure Portal a ujistěte se, že jste přihlášeni ke správnému tenantovi. V pravém horním rohu ověřte identitu použitou k přihlášení k portálu.

  3. V podokně prostředků vyberte ID> Microsoft Entra Registrace aplikací.

  4. Vyhledejte aplikaci, která používá tok on-behalf-of , a otevřete ji.

  5. Vyberte manifest.

  6. Vyberte requiredResourceAccess.

  7. Do manifestu přidejte následující položku:

      {
        "resourceAppId": "00001111-aaaa-2222-bbbb-3333cccc4444",
        "resourceAccess": [
            {
                "id": "388e2b3a-fdb8-4f0b-ae3e-0692ca9efc1c",
                "type": "Scope"
            }
        ]
      }
    
    • 00001111-aaaa-2222-bbbb-3333cccc4444 je ID aplikace služby řídicího panelu Azure Data Exploreru.
    • 388e2b3a-fdb8-4f0b-ae3e-0692ca9efc1c je oprávnění user_impersonation.
  8. V manifestu uložte změny.

  9. Vyberte oprávnění rozhraní API a ověřte, že máte novou položku: Služba metadat RTD.

  10. V části Microsoft Graph přidejte oprávnění pro People.Read, User.ReadBasic.Alla Group.Read.All.

  11. V Azure PowerShellu přidejte pro aplikaci následující nový instanční objekt:

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

    Pokud narazíte na Request_MultipleObjectsWithSameKeyValue chybu, znamená to, že aplikace už je v tenantovi, což znamená, že se úspěšně přidala.

  12. Na stránce oprávnění rozhraní API vyberte Udělit správci souhlas se souhlasem pro všechny uživatele.

Poznámka:

Pokud chcete vložit řídicí panel bez oblasti dotazu, použijte následující nastavení:

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

kde [feature-flags] je:

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

Hlavní příznaky

Důležité

Příznak f-IFrameAuth=true se vyžaduje, aby prvek iframe fungoval. Ostatní příznaky jsou volitelné.

Hostitelská aplikace může chtít řídit určité aspekty uživatelského prostředí. Skryjte například podokno připojení nebo zakažte připojení k jiným clusterům. V tomto scénáři webový průzkumník podporuje příznaky funkcí.

Příznak funkce lze použít v adrese URL jako parametr dotazu. Pokud chcete zakázat přidávání dalších clusterů, použijte https://dataexplorer.azure.com/?f-ShowConnectionButtons=false v hostitelské aplikaci.

nastavení Popis Výchozí hodnota
f-ShowShareMenu Zobrazit položku nabídky Sdílet true
f-ShowConnectionButtons Zobrazení tlačítka pro přidání připojení pro přidání nového clusteru true
f-ShowOpenNewWindowButton Zobrazí tlačítko otevřít ve webovém uživatelském rozhraní, které otevře nové okno prohlížeče a přejde na https://dataexplorer.azure.com správný cluster a databázi v oboru. false (nepravda)
f-ShowFileMenu Zobrazení nabídky souboru (stažení, karta, obsah atd.) true
f-ShowToS Zobrazení odkazu na podmínky služby pro Azure Data Explorer z dialogového okna nastavení true
f-ShowPersona V pravém horním rohu zobrazte uživatelské jméno z nabídky nastavení. true
f-UseMeControl Zobrazení informací o účtu uživatele true
f-IFrameAuth Pokud je pravda, webový průzkumník očekává, že element iframe zpracuje ověřování a poskytne token prostřednictvím zprávy. Tento parametr se vyžaduje pro scénáře iframe. false (nepravda)
f-PersistAfterEachRun Prohlížeče se obvykle uchovávají v události uvolnění. Událost uvolnění se ale neaktivuje vždy při hostování v prvku iframe. Tento příznak aktivuje trvalou místní stav událost po každém spuštění dotazu. Tím se omezí jakákoli ztráta dat, ke které může dojít, aby ovlivnila pouze nový text dotazu, který se nikdy nespustí. false (nepravda)
f-ShowSmoothIngestion Pokud je hodnota true, při kliknutí pravým tlačítkem myši na databázi zobrazte prostředí průvodce příjmem dat. true
f-RefreshConnection Pokud je hodnota true, při načítání stránky vždy aktualizuje schéma a nikdy nezávisí na místním úložišti. false (nepravda)
f-ShowPageHeader Pokud je hodnota true, zobrazí se záhlaví stránky, které obsahuje název a nastavení Azure Data Exploreru. true
f-HideConnectionPane Pokud je hodnota true, levé podokno připojení se nezobrazí. false (nepravda)
f-SkipMonacoFocusOnInit Řeší problém s fokusem při hostování prvku iframe. false (nepravda)
f-Homepage Povolení domovské stránky a přesměrování nových uživatelů na ni true
f-ShowNavigation POKUD je true, zobrazuje navigační podokno vlevo. true
f-DisableDashboardTopBar POKUD je true, skryje horní panel na řídicím panelu. false (nepravda)
f-DisableNewDashboard POKUD je true, skryje možnost pro přidání nového řídicího panelu. false (nepravda)
f-DisableNewDashboard POKUD je true, skryje možnost hledání v seznamu řídicích panelů. false (nepravda)
f-DisableDashboardEditMenu POKUD je true, skryje možnost pro úpravu řídicího panelu. false (nepravda)
f-DisableDashboardFileMenu POKUD je true, skryje tlačítko nabídky soubor na řídicím panelu. false (nepravda)
f-DisableDashboardShareMenu POKUD je true, skryje tlačítko nabídky Sdílet na řídicím panelu. false (nepravda)
f-DisableDashboardDelete POKUD je true, skryje tlačítko pro odstranění řídicího panelu. false (nepravda)
f-DisableTileRefresh POKUD je true, zakáže tlačítko aktualizovat dlaždice na řídicím panelu. false (nepravda)
f-DisableDashboardAutoRefresh POKUD je true, zakáže automatické aktualizace dlaždic na řídicím panelu. false (nepravda)
f-DisableExploreQuery POKUD je true, zakáže tlačítko prozkoumat dotaz na dlaždicích. false (nepravda)
f-DisableCrossFiltering POKUD je true, zakáže funkci křížového filtrování na řídicích panelech. false (nepravda)
f-HideDashboardParametersBar POKUD je true, skryje panel parametrů na řídicím panelu. false (nepravda)