Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Mielőtt beszerezné a hozzáférési jogkivonatot, győződjön meg arról, hogy tisztában van az alkalmazásobjektum inicializálásával. Fontos a hozzáférési jogkivonatok és az erőforrások közötti kapcsolat megértése is.
Az MSAL-ben hozzáférési jogkivonatokat kaphat az alkalmazás által meghívandó API-khoz a acquireToken* kódtár által biztosított módszerekkel. A acquireToken* metódusok elvonják a jogkivonatok OAuth 2.0-s engedélyezési kódfolyamattal való beszerzésének 2 lépését:
- kérelmet küldhet a Microsoft Entra ID-hoz egy
authorization codebeszerzéséhez - a felhasználó által megadott hatóköröket tartalmazó hozzáférési jogkivonat kódjának cseréje
Hozzáférési jogkivonat beszerzése
Interakciótípus kiválasztása
Lásd itt , ha bizonytalan a különbségek között acquireTokenRedirect és acquireTokenPopup.
A kérelemobjektum előkészítése
Át kell adnia egy kérelemobjektumot az acquireToken* API-knak. Ez az objektum lehetővé teszi, hogy különböző paramétereket használjon a kérelemben. A kérelemobjektum paramétereiről itt talál további információt. Minden híváshoz acquireToken* hatókörre van szükség.
A gyorsítótár ellenőrzése
Az MSAL gyorsítótárat használ a tokenek tárolására olyan megadott paraméterek alapján, mint a hatókörök, az erőforrás és a hitelesítési végpont, és szükség esetén a tokent a gyorsítótárból olvassa be. A lejárt tokenek csendes megújítását is el tudja végezni. Az MSAL ezt a funkciót a acquireTokenSilent metóduson keresztül teszi elérhetővé.
Miután bejelentkezett a ssoSilent vagy a login* API egyikével, a gyorsítótár ID-, hozzáférési és frissítési tokeneket fog tartalmazni. Minden alkalommal, amikor szüksége van egy hozzáférési jogkivonatra, hívja meg acquireTokenSilent , és ha ez nem sikerül, inkább egy interaktív API-t hívjon meg.
acquireTokenSilent egy érvényes jogkivonatot keres a gyorsítótárban, és ha közel van a lejárathoz, vagy nem létezik, automatikusan megpróbálja frissíteni a gyorsítótárazott frissítési jogkivonat használatával. A acquireTokenSilent itt olvashat bővebben.
Popup
var request = {
scopes: ["User.Read"],
};
msalInstance.acquireTokenSilent(request).then(tokenResponse => {
// Do something with the tokenResponse
}).catch(async (error) => {
if (error instanceof InteractionRequiredAuthError) {
// fallback to interaction when silent call fails
return msalInstance.acquireTokenPopup(request);
}
// handle other errors
})
Redirect
var request = {
scopes: ["User.Read"],
};
msalInstance.acquireTokenSilent(request).then(tokenResponse => {
// Do something with the tokenResponse
}).catch(error => {
if (error instanceof InteractionRequiredAuthError) {
// fallback to interaction when silent call fails
return msalInstance.acquireTokenRedirect(request)
}
// handle other errors
});
A hozzáférési jogkivonat használata
Miután lekérte a hozzáférési jogkivonatot, azt a Authorization fejlécbe kell belefoglalnia tulajdonosi jogkivonatként ahhoz az erőforráshoz, amelyhez a jogkivonatot beszerezte, az alábbiak szerint:
var headers = new Headers();
var bearer = "Bearer " + tokenResponse.accessToken;
headers.append("Authorization", bearer);
var options = {
method: "GET",
headers: headers
};
var graphEndpoint = "https://graph.microsoft.com/v1.0/me";
fetch(graphEndpoint, options)
.then(resp => {
//do something with response
});
Ajánlott eljárások az MSAL-jogkivonatok beszerzéséhez
Az alábbiakban az MSAL használatával történő tokenlekérés bevált módszerei olvashatók a hibák, a teljesítményromlás és a használhatósági problémák elkerülése érdekében. Bizonyos forgatókönyvek kivételeket biztosíthatnak ezek alól.
Egyetlen PublicClientApplication-példány használata
Alkalmazásonként hozzon létre egy PublicClientApplication példányt, és az alkalmazás teljes egészében ugyanazt a példányt használja. Ez biztosítja, hogy az MSAL által adott időben végzett műveletek egyetlen igazságforrással rendelkeznek (lásd: MSAL-események), és kiküszöböli annak az esélyét, hogy különböző alkalmazásobjektumok párhuzamos interaktív kéréseket vagy potenciális gyorsítótár-ütközéseket okoznak, amelyek megszakíthatják az alkalmazásokat, csökkenthetik a teljesítményt vagy akadályozhatják a felhasználói élményt.
Mindig várjon, amíg az ígéretek megoldódnak
Az összes MSAL acquireToken* és login* API aszinkron műveleteket hajt végre, és ígéreteket ad vissza. A hitelesítési állapottól vagy jogkivonatoktól függő egyéb feladatok, például felhasználói adatok megjelenítése, védett API meghívása vagy más MSAL API-k meghívása előtt mindig várjon ezekre az ígéretekre.
Először kísérelje meg a csendes kérelmet, majd az interaktívat
A jogkivonatok lekérésekor mindig először használjon acquireTokenSilent , és szükség esetén visszatérjen az interaktív jogkivonat-beszerzéshez (például a InteractionRequiredAuthError dobáskor).
Egyidejű csendes kérések engedélyezettek. Ha két vagy több csendes kérelem egyidejűleg történik, csak egy lép a hálózatra (ha szükséges), de mindegyik megkapja a választ, amennyiben ezek a kérések ugyanazokra a kérelemparaméterekre (például hatókörökre) vonatkoznak.
Az egyidejű interaktív kérések nem engedélyezettek. Ha két vagy több interaktív kérés egyidejűleg történik, csak az első kezdi meg az interakciót, míg a többi interaction_in_progress hibával meghiúsul. Javasoljuk, hogy ismerkedjen meg ezzel a hibával és a lehetséges megoldásokkal, hogy elkerülje, hogy az alkalmazásaiban találkozzon vele.
Erőforrásonként egy tokenkérelmet küldjön be.
Egyszerre csak egy erőforráshoz kérhet hozzáférési jogkivonatokat (lásd az erőforrásokat és a hatóköröket). Szükség esetén a kérelemobjektum paraméterének használatával extraScopesToConsent kérheti a felhasználó hozzájárulását egynél több erőforrás által megkövetelt hatókörökhöz (engedélyekhez). A korábban jóváhagyott hatókörökhöz tartozó hozzáférési tokenek interakció nélkül lekérhetők.