Poznámka
Na prístup k tejto stránke sa vyžaduje oprávnenie. Môžete sa skúsiť prihlásiť alebo zmeniť adresáre.
Na prístup k tejto stránke sa vyžaduje oprávnenie. Môžete skúsiť zmeniť adresáre.
Tento článok obsahuje pokyny na prácu s overovaním pri vytváraní vyťažení služby Microsoft Fabric. Obsahuje informácie o práci s tokenmi a súhlasmi.
Skôr než začnete, uistite sa, že poznáte koncepty v prehľade overovania a nastavenia overovania.
Rozhranie API na rovine údajov a ovládajej rovine
rozhrania API na rovine údajov sú rozhrania API, ktoré sprístupňuje koncový server vyťaženia. Klientske vyťaženie ich môže volať priamo. V prípade rozhraní API na úrovni údajov môže koncový server vyťaženia rozhodnúť o tom, aké rozhrania API budú zobrazovať.
Rozhrania API na ovládanie lietadla sú rozhrania API, ktoré prechádzajú cez fabric. Proces sa začína klientskou vyťažením, ktoré volá rozhranie JavaScript API, a končí sa na to, že fabric volá vyťaženie backend. Príkladom takéhoto rozhrania API je Vytvoriť položku.
V prípade rozhrania API na riadenie zaťaženia musí vyťaženie postupovať podľa zmlúv definovaných v koncovom servere vyťaženia a vykonávať tieto rozhrania API.
Vystavenie karty rozhrania API v aplikácii vyťaženia v aplikácii Microsoft Entra ID
Na karte Vystavenie rozhrania API je potrebné pridať rozsahy pre rozhrania API riadenia a rozsahy pre rozhrania API na rovine údajov:
Rozsahy pridané pre rozhrania API riadiacej roviny by mali predbežne povoliť aplikáciu Fabric Client for Workloads s ID aplikácie
d2450708-699c-41e3-8077-b0c8341509aa. Tieto rozsahy sú zahrnuté v tokene, ktorý serverová časť vyťaženia dostane, keď ju zavolá služba Fabric.Pre fungovanie postupu je potrebné pridať aspoň jeden rozsah pre rozhranie API ovládanej roviny.
Rozsahy pridané pre rozhrania API na údajovej rovine by mali predbežne povoliť službu Microsoft Power BI s ID aplikácie
871c010f-5e61-4fb1-83ac-98610a7e9110. Sú zahrnuté v tokene, ktorýacquireAccessTokenrozhraní JavaScript API vráti.V prípade rozhraní API na úrovni údajov môžete použiť túto kartu na správu podrobných povolení pre každé rozhranie API, ktoré sprístupňuje vaše vyťaženie. V ideálnom prípade by ste mali pridať množinu rozsahov pre každé rozhranie API, ktoré koncový server služby sprístupňuje a overuje, či prijatý token obsahuje tieto rozsahy pri volaní týchto rozhraní API od klienta. Napríklad:
- Vyťaženie sprístupňuje dve rozhrania API klientovi,
ReadDataaWriteData. - Vyťaženie sprístupňuje dva rozsahy údajovej roviny,
data.readadata.write. - V rozhraní
ReadDataAPI vyťaženie overí, či je rozsahdata.readzahrnutý v tokene ešte predtým, ako bude pokračovať s postupom. To isté platí preWriteData.
- Vyťaženie sprístupňuje dve rozhrania API klientovi,
Karta povolení rozhrania API v aplikácii vyťaženia v aplikácii Microsoft Entra ID
Na karte povolení rozhrania API musíte pridať všetky rozsahy, pre ktoré si vaše vyťaženie vyžaduje výmenu tokenu. Povinný rozsah, ktorý sa má pridať, je Fabric.Extend v rámci služby Power BI. Žiadosti o fabric môžu zlyhať bez tohto rozsahu.
Práca s tokenmi a súhlasmi
Keď pracujete s rozhraniami API na údajovej rovine, klientske vyťaženie musí získať token pre volania koncového miesta vyťaženia.
Nasledujúce časti popisujú, ako by klientske vyťaženie malo používať rozhrania API
Krok č. 1: Získanie tokenu
Vyťaženie začína požiadavkou na token pomocou rozhrania JavaScript API bez uvedenia parametrov. Toto volanie môže mať za následok dva scenáre:
Používateľovi sa zobrazí okno so súhlasom všetkých statických závislostí (nakonfigurovaných na karte povolenia rozhrania API), ktoré vyťaženie nakonfigurovalo. Tento scenár nastane, ak používateľ nie je súčasťou domovského nájomníka aplikácie a používateľ predtým neudelil súhlas službe Microsoft Graph pre túto aplikáciu.
Používateľovi sa nezobrazuje okno so súhlasom. Tento scenár nastane, ak používateľ už aspoň raz povolil použitie služby Microsoft Graph pre túto aplikáciu, alebo ak je používateľ súčasťou domovského nájomníka aplikácie.
V oboch scenároch by vyťaženie nemalo zaujímať, či používateľ udelil úplný súhlas pre všetky závislosti (a v tomto bode sa to nedá zistiť). Prijatý token má cieľovú skupinu koncového vyťaženia a možno ho použiť na priame volanie koncového serveru vyťaženia z frontendu vyťaženia.
Krok č. 2: Skúste získať prístup k externým službám
Vyťaženie môže vyžadovať prístup k službám, ktoré vyžadujú overenie. Na účely tohto prístupu musí vykonať tok OBO, kde sa token, ktorý dostal od svojho klienta alebo zo služby Fabric, vymieňa do inej služby. Výmena tokenov môže zlyhať pre nedostatok súhlasu alebo pre určitú politiku podmieneného prístupu k službe Microsoft Entra, ktorá je nakonfigurovaná na zdroji, pre ktorý sa vyťaženie pokúša vymeniť token.
Ak chcete vyriešiť tento problém, je zodpovednosťou vyťaženia šíriť chybu klientovi pri práci s priamymi volaniami medzi klientskym a koncovým serverom. Je tiež zodpovednosťou vyťaženia šíriť chybu klientovi pri práci s volaniami z služby Fabric pomocou šírenia chýb opísaného v téme komunikácia vyťaženia.
Keď vyťaženie rozšíri chybu, môže zavolať acquireAccessToken rozhranie JavaScript API, ktoré vyrieši problém s politikou súhlasu alebo podmieneného prístupu a zopakuje operáciu.
Informácie o zlyhaniach rozhrania API na základe údajov nájdete v téme Spracovanie viacfaktorového overovania, Podmienený prístup a prírastkový súhlas. Informácie o zlyhaniach rozhrania API na ovládanie roviny nájdete v téme komunikácia vyťaženia.
Príklad scenárov
Pozrime sa na vyťaženie, ktoré potrebuje získať prístup k trom rozhraniam API služby Fabric:
Zoznam pracovných priestorov:
GET https://api.fabric.microsoft.com/v1/workspacesVytvorenie skladu:
POST https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/warehousesZapisovať do súboru lakehouse:
PUT https://onelake.dfs.fabric.microsoft.com/{filePath}?resource=file
Aby bolo možné pracovať s týmito rozhraniami API, koncový server vyťaženia musí vymeniť tokeny za nasledujúce rozsahy:
- Uvedenie pracovných priestorov:
https://analysis.windows.net/powerbi/api/Workspace.Read.Allalebohttps://analysis.windows.net/powerbi/api/Workspace.ReadWrite.All - Vytvorenie skladu:
https://analysis.windows.net/powerbi/api/Warehouse.ReadWrite.Allalebohttps://analysis.windows.net/powerbi/api/Item.ReadWrite.All - Pre písanie do súboru lakehouse:
https://storage.azure.com/user_impersonation
Poznámka
Rozsahy potrebné pre každé rozhranie API služby Fabric nájdete v tomto referenčnom článku.
Rozsahy uvedené vyššie je potrebné nakonfigurovať v aplikácii na vyťaženie v časti povolení rozhrania API.
Pozrime sa na príklady scenárov, na ktoré sa vyťaženie môže vyskytnúť.
Príklad č. 1
Predpokladajme, že koncový server vyťaženia má rozhranie API na rovine údajov, ktoré načíta pracovné priestory používateľa a vráti ich klientovi:
Vyťaženie frontend žiada o token pomocou rozhrania JavaScript API.
Klientske vyťaženie volá rozhranie API koncového vyťaženia, aby sa získali pracovné priestory používateľa, a priloží token do požiadavky.
Koncový server vyťaženia overí token a pokúsi sa ho vymeniť za požadovaný rozsah (povedzme
https://analysis.windows.net/powerbi/api/Workspace.Read.All).Vyťaženie nepodarí vymeniť token za zadaný zdroj, pretože používateľ nebol súhlasný pre aplikáciu na prístup k tomuto zdroju (pozrite si kódy chýb AADSTS).
Koncový server vyťaženia rozšíri chybu do vyťaženia vopred zadaním, že potrebuje súhlas pre tento zdroj. Klientske vyťaženie volá
acquireAccessTokenrozhranie JavaScript API a poskytujeadditionalScopesToConsent:workloadClient.auth.acquireAccessToken({additionalScopesToConsent: ["https://analysis.windows.net/powerbi/api/Workspace.Read.All"]})Prípadne sa vyťaženie môže rozhodnúť požiadať o súhlas so všetkými statickými závislosťami, ktoré sú nakonfigurované v jeho aplikácii, takže zavolá rozhranie JavaScript API a poskytuje
promptFullConsent:workloadClient.auth.acquireAccessToken({promptFullConsent: true}).
V tomto volaní sa zobrazí okno so súhlasom bez ohľadu na to, či používateľ vyjadril súhlas s niektorými závislosťami. Potom môže vyťaženie na koncovom paneli skúsiť operáciu znova.
Poznámka
Ak výmena tokenov naďalej zlyhá v dôsledku chyby súhlasu, znamená to, že používateľ neudelil súhlas. Vyťaženie musí spracovávať takéto scenáre; Upozornite napríklad používateľa, že toto rozhranie API vyžaduje súhlas a nebude bez neho fungovať.
Príklad č. 2
Predpokladajme, že koncový server vyťaženia musí získať prístup k službe OneLake v rozhraní API na vytvorenie položky (volanie zo služby Fabric do vyťaženia):
Klientske vyťaženie volá rozhranie JavaScript API vytvoriť položku.
Na server vyťaženia sa odošle volanie služby Fabric, ktoré extrahuje delegovaný token a overí ho.
Vyťaženie sa pokúsi vymeniť token za
https://storage.azure.com/user_impersonation, ale zlyhá, pretože správca nájomníka nakonfigurovaného viacfaktorového overovania potrebného na prístup k službe Azure Storage (pozri kódy chýb AADSTS).Vyťaženie rozšíri chybu spolu s nárokmi vrátenými v chybe z Microsoft Entra ID do klienta pomocou šírenia chýb opísaného v téme komunikácie vyťaženia.
Klientske vyťaženie volá
acquireAccessTokenrozhranie JavaScript API a poskytuje nároky akoclaimsForConditionalAccessPolicy, kdeclaimsodkazuje na tvrdenia šírené zo serveru vyťaženia:workloadClient.auth.acquireAccessToken({claimsForConditionalAccessPolicy: claims})
Potom môže vyťaženie skúsiť operáciu znova.
Spracovanie chýb pri vyžiadaní súhlasu
Niekedy používateľ nemôže udeliť súhlas z dôvodu rôznych chýb. Po vyžiadaní súhlasu sa odpoveď vráti identifikátoru URI presmerovania. V našom príklade je tento kód zodpovedný za spracovanie odpovede. (Nájdete ho v súbore index.ts.)
const redirectUriPath = '/close';
const url = new URL(window.location.href);
if (url.pathname?.startsWith(redirectUriPath)) {
// Handle errors, Please refer to https://learn.microsoft.com/entra/identity-platform/reference-error-codes
if (url?.hash?.includes("error")) {
// Handle missing service principal error
if (url.hash.includes("AADSTS650052")) {
printFormattedAADErrorMessage(url?.hash);
// handle user declined the consent error
} else if (url.hash.includes("AADSTS65004")) {
printFormattedAADErrorMessage(url?.hash);
}
}
// Always close the window
window.close();
}
Klientske vyťaženie môže extrahovať kód chyby z URL adresy a podľa toho ho spracovať.
Poznámka
V oboch scenároch (chyba a úspech) musí vyťaženie vždy okamžite zatvoriť okno bez latencie.