Microsoft Fabric -kuormituksen todentamisen ohjeiden yleiskatsaus
Tässä artikkelissa on ohjeita siitä, miten todennusta käsitellään, kun luot Microsoft Fabric -kuormituksia. Se sisältää tietoja tunnusten ja suostumusten käsittelemisestä.
Ennen kuin aloitat, varmista, että olet tutustunut käsitteisiin kohdassa Authentication overview and Authentication setup.
Tietotason ja ohjaustason ohjelmointirajapinnat
Tietotason ohjelmointirajapinnat ovat ohjelmointirajapintoja, jotka kuormituksen tausta paljastaa. Kuormituksen edusta voi kutsua suoraan. Tietotason ohjelmointirajapinnoille kuormituksen taustatiedot voivat päättää, mitä ohjelmointirajapintoja paljastaa.
Control -tason ohjelmointirajapinnat ovat Fabricin kautta olevia ohjelmointirajapintoja. Prosessi alkaa kuormituksen edustalla, joka kutsuu JavaScript-ohjelmointirajapinnan, ja se päättyy siihen, että Fabric kutsuu kuormituksen taustaksi. Esimerkki tällaisesta ohjelmointirajapinnasta on Luo kohde.
Hallintatason ohjelmointirajapintojen osalta kuormituksen on noudatettava kuormituksen taustaliittymessä määritettyjä sopimuksia ja toteutettava nämä ohjelmointirajapinnat.
Ohjelmointirajapinnan välilehden paljastaminen kuormituksen sovelluksessa Microsoft Entra -tunnuksella
Näytä ohjelmointirajapinnan -välilehdessä sinun on lisättävä vaikutusalueet tason ohjelmointirajapinnoille ja tietotason ohjelmointirajapinnoille:
Ohjaustason ohjelmointirajapinnoille lisättyjen vaikutusalueiden tulisi määrittää Fabric Client for Workloads -sovellus valmiiksi sovellustunnuksella
d2450708-699c-41e3-8077-b0c8341509aa
. Nämä alueet sisältyvät tunnukseen, jonka kuormituksen tausta vastaanottaa, kun Fabric kutsuu sitä.Sinun on lisättävä vähintään yksi laajuus ohjaustason ohjelmointirajapinnalle, jotta työnkulku toimii.
Tietotason ohjelmointirajapinnoille lisättyjen vaikutusalueiden tulisi esimäärittää Microsoft Power BI sovellustunnuksella
871c010f-5e61-4fb1-83ac-98610a7e9110
. Ne sisältyvät tunnukseen, jonkaacquireAccessToken
JavaScript-ohjelmointirajapinta palauttaa.Tietotason ohjelmointirajapintojen tapauksessa voit tämän välilehden avulla hallita eriytettyjä käyttöoikeuksia kullekin ohjelmointirajapinnalle, jonka kuormitus paljastaa. Ihannetapauksessa sinun kannattaa lisätä vaikutusaluejoukko kullekin ohjelmointirajapinnalle, jonka kuormituksen tausta paljastaa, ja vahvistaa, että saatu tunnus sisältää nämä alueet, kun kyseisiä ohjelmointirajapintoja kutsutaan asiakkaalta. Esimerkiksi:
- Kuormitus paljastaa asiakkaalle kaksi ohjelmointirajapintaa,
ReadData
jaWriteData
. - Kuormitus näyttää kaksi tietotason vaikutusaluetta,
data.read
jadata.write
. -
ReadData
-ohjelmointirajapinnassa kuormitus vahvistaa, ettädata.read
laajuus on tunnuksen mukana, ennen kuin se jatkaa työnkulkua. Sama koskeeWriteData
.
- Kuormitus paljastaa asiakkaalle kaksi ohjelmointirajapintaa,
Ohjelmointirajapinnan käyttöoikeudet -välilehti kuormituksen sovelluksessa Microsoft Entra -tunnuksella
ohjelmointirajapinnan käyttöoikeudet -välilehdessä sinun on lisättävä kaikki vaikutusalueet, joihin kuormituksesi tarvitsee vaihtaa tunnus. Pakollinen lisättävä vaikutusalue on Fabric.Extend
Power BI -palvelussa. Fabric-pyynnöt saattavat epäonnistua ilman tätä soveltamisalaa.
Tunnusten ja suostumusten käyttäminen
Kun käsittelet tietotason ohjelmointirajapintoja, kuormituksen edustan on hankittava tunnus kuormituksen taustakutsujen kutsuille.
Seuraavissa osioissa kuvataan, miten kuormituksen edustan tulee käyttää JavaScript -ohjelmointirajapinnan ja OBO-työnkulkuja kuormituksen ja ulkoisten palveluiden tunnusten hankkimiseen sekä suostumukseen.
Vaihe 1: Hanki tunnus
Kuormitus alkaa kysymällä tunnusta JavaScript-ohjelmointirajapinnan avulla ilman parametreja. Tämä kutsu voi aiheuttaa kaksi skenaariota:
Käyttäjä näkee suostumusikkunan kaikista staattisista riippuvuuksista (jotka on määritetty kuormituksen määrittämässä -ohjelmointirajapinnan käyttöoikeudet välilehdessä). Näin tapahtuu, jos käyttäjä ei ole osa sovelluksen kotivuokraajaa eikä käyttäjä ole aiemmin myöntänyt Microsoft Graphille lupaa tähän sovellukseen.
Käyttäjä ei näe suostumusikkunaa. Näin tapahtuu, jos käyttäjä on jo antanut vähintään kerran luvan Microsoft Graphille tätä sovellusta varten tai jos käyttäjä on osa sovelluksen kotivuokraajaa.
Molemmissa tilanteissa kuormituksen ei pitäisi välittää siitä, antoiko käyttäjä täyden suostumuksen kaikille riippuvuuksille (eikä voi tässä vaiheessa tietää). Vastaanotetun tunnuksen kohderyhmä on kuormituksen taustaryhmä, ja sen avulla voidaan kutsua kuormituksen taustatunnusta suoraan kuormituksen edustasta.
Vaihe 2: Yritä käyttää ulkoisia palveluita
Kuormituksen on ehkä päästävä palveluihin, jotka edellyttävät todentamista. Tätä käyttöä varten sen on suoritettava OBO-työnkulun , jossa se vaihtaa asiakkaaltaan tai Fabricilta saamansa tunnuksen toiseen palveluun. Tunnuksen vaihto saattaa epäonnistua, jos suostumus tai Jokin Microsoft Entran ehdollinen käyttöoikeuskäytäntö on määritetty resurssille, jolle kuormitus yrittää vaihtaa tunnusta.
Tämän ongelman ratkaisemiseksi on kuormituksen vastuulla levittää virhe asiakkaalle käsiteltäessä suoria kutsuja edustan ja taustan välillä. Kuormituksen vastuulla on myös levittää virhe asiakkaalle, kun hän käsittelee Fabricin kutsuja käyttämällä kuormituksen välitysvirhettä kuormitusviestinnässä.
Kun kuormitus levittää virheen, se voi kutsua acquireAccessToken
JavaScript-ohjelmointirajapinnan suostumus- tai ehdollisten käyttöoikeuksien käytännön ongelman ratkaisemiseksi ja toiminnon uudelleen yrityksenä.
Jos tietotason ohjelmointirajapinta epäonnistuu, katso Monimenetelmäisen todentamisen käsittely, Ehdollinen käyttöoikeus ja lisäävän suostumuksen. Katso lentokoneen ohjelmointirajapintavirheiden hallinta kohdasta Kuormituksen tietoliikenne.
Esimerkkejä
Katsotaanpa kuormitusta, jonka on käytettävä kolmea Fabric-ohjelmointirajapintaa:
Luetteloi työtilat:
GET https://api.fabric.microsoft.com/v1/workspaces
Luo varasto:
POST https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/warehouses
Kirjoita Lakehouse-tiedostoon:
PUT https://onelake.dfs.fabric.microsoft.com/{filePath}?resource=file
Jotta voit käyttää kyseisiä ohjelmointirajapintoja, kuormituksen taustan on vaihdettava tunnukset seuraaville soveltamisalueille:
- Työtilojen luettelointi:
https://analysis.windows.net/powerbi/api/Workspace.Read.All
taihttps://analysis.windows.net/powerbi/api/Workspace.ReadWrite.All
- Varaston luominen:
https://analysis.windows.net/powerbi/api/Warehouse.ReadWrite.All
taihttps://analysis.windows.net/powerbi/api/Item.ReadWrite.All
- Lakehouse-tiedostoon kirjoittamisesta:
https://storage.azure.com/user_impersonation
Aiemmin mainitut vaikutusalueet on määritettävä kuormitussovelluksessa kohdassa ohjelmointirajapinnan käyttöoikeudet.
Tutustutaan nyt esimerkkeihin skenaarioista, joita kuormitus saattaa kohdata.
Esimerkki 1
Oletetaan, että kuormituksen taustan ohjelmointirajapinnalla on tietotason ohjelmointirajapinta, joka hakee käyttäjän työtilat ja palauttaa ne asiakkaalle:
Kuormituksen edusta pyytää tunnusta JavaScript-ohjelmointirajapinnan avulla.
Kuormituksen edusta kutsuu kuormituksen taustan ohjelmointirajapintaa käyttäjän työtilojen hakemiseksi ja liittää tunnuksen pyynnössä.
Kuormituksen taustapalvelu vahvistaa tunnuksen ja yrittää vaihtaa sen vaaditulle laajuudelle (esimerkiksi
https://analysis.windows.net/powerbi/api/Workspace.Read.All
).Kuormitus ei vaihda tunnusta määritetylle resurssille, koska käyttäjä ei antanut sovellukselle lupaa käyttää tätä resurssia (katso AADSTS-virhekoodit).
Kuormituksen taustailmoitus levittää virheen kuormituksen eteen määrittämällä, että se tarvitsee suostumuksen kyseiselle resurssille. Kuormituksen edusta kutsuu
acquireAccessToken
JavaScript -ohjelmointirajapintaa ja tarjoaaadditionalScopesToConsent
:workloadClient.auth.acquireAccessToken({additionalScopesToConsent: ["https://analysis.windows.net/powerbi/api/Workspace.Read.All"]})
Vaihtoehtoisesti kuormitus voi pyytää suostumusta kaikille sovelluksen staattisille riippuvuuksilleen, joten se kutsuu JavaScript-ohjelmointirajapintaa ja tarjoaa
promptFullConsent
:workloadClient.auth.acquireAccessToken({promptFullConsent: true})
.
Tämä kutsu antaa suostumusikkunan riippumatta siitä, onko käyttäjä antanut suostumuksensa joihinkin riippuvuuksia. Sen jälkeen kuormituksen edusta voi yrittää toimintoa uudelleen.
Muistiinpano
Jos tunnusten vaihto epäonnistuu edelleen suostumusvirheen vuoksi, käyttäjä ei ole antanut suostumustaan. Kuormituksen on käsiteltävä tällaisia skenaarioita. Voit esimerkiksi ilmoittaa käyttäjälle, että tämä ohjelmointirajapinta edellyttää suostumusta, eikä se toimi ilman sitä.
Esimerkki 2
Oletetaan, että kuormituksen taustan on käytettävä OneLakea Kohteen luomisen ohjelmointirajapinnassa (kutsu Fabricista työkuormaan):
Kuormituksen edusta kutsuu Luo kohde JavaScript -ohjelmointirajapintaa.
Kuormituksen taustatunnus vastaanottaa kutsun Fabricista ja poimii delegoidun tunnuksen ja vahvistaa sen.
Kuormitus yrittää vaihtaa tunnuksen
https://storage.azure.com/user_impersonation
mutta epäonnistuu, koska Azure-tallennuksen käyttämiseen tarvittavan käyttäjän määrittämän monimenetelmäisen todentamisen vuokraajajärjestelmänvalvoja (katso AADSTS-virhekoodit).Kuormitus levittää virheen Microsoft Entra ID:ssä saamien väitteiden ohessa asiakkaalle käyttämällä Kuormitusviestinnänkuvattua virheen välittämistä.
Kuormituksen edusta kutsuu
acquireAccessToken
JavaScript -ohjelmointirajapintaa ja esittää väitteet muodossaclaimsForConditionalAccessPolicy
, joissaclaims
viittaavat kuormituksen taustasta välitettyihin vaateisiin:workloadClient.auth.acquireAccessToken({claimsForConditionalAccessPolicy: claims})
Sen jälkeen kuormitus voi yrittää toimintoa uudelleen.
Virheiden käsittely suostumusta pyydettäessä
Joskus käyttäjä ei voi antaa suostumusta eri virheiden vuoksi. Suostumuspyynnön jälkeen vastaus palautetaan uudelleenohjauksen URI-tunnuksen. Tässä esimerkissä tämä koodi vastaa vastauksen käsittelystä. (Löydät sen index.ts tiedostosta.)
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();
}
Kuormituksen edusta voi poimia virhekoodin URL-osoitteesta ja käsitellä sen vastaavasti.
Muistiinpano
Molemmissa tilanteissa (virhe ja onnistuminen) kuormituksen on aina suljettava ikkuna välittömästi ilman viivettä.