Hozzáférési jogkivonat beszerzése és használata

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:

  1. kérelmet küldhet a Microsoft Entra ID-hoz egy authorization code beszerzéséhez
  2. 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.

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.

Következő lépések