Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Innan du skaffar en åtkomsttoken måste du förstå hur du initierar programobjektet. Det är också viktigt att förstå relationen mellan åtkomsttoken och resurser.
I MSAL kan du hämta åtkomsttoken för de API:er som appen behöver anropa med hjälp av de acquireToken* metoder som tillhandahålls av biblioteket. Metoderna acquireToken* abstraherar bort de två steg som ingår i att hämta token med OAuth 2.0-auktoriseringskodflödet:
- göra en begäran till Microsoft Entra ID för att få en
authorization code - byta ut koden mot en åtkomsttoken som innehåller de omfattningar som användaren har samtyckt till
Skaffa en åtkomsttoken
Välj en interaktionstyp
Se här om du är osäker på skillnaderna mellan acquireTokenRedirect och acquireTokenPopup.
Förbereda begärandeobjektet
Du måste skicka ett begärandeobjekt till API:erna acquireToken* . Med det här objektet kan du använda olika parametrar i begäran. Mer information om parametrarna för begärandeobjekt finns här . Omfång krävs för alla acquireToken* anrop.
Kontrollera cachen
MSAL använder en cache för att lagra token baserat på specifika parametrar, inklusive omfång, resurs och utfärdare, och hämtar token från cachen när det behövs. Den kan också utföra tyst förnyelse av dessa token när de har upphört att gälla. MSAL exponerar den här funktionen via acquireTokenSilent -metoden.
När du har loggat in med något av api:erna ssoSilent eller login* innehåller cacheminnet en uppsättning ID-, åtkomst- och uppdateringstoken. Varje gång du behöver en åtkomsttoken bör du anropa acquireTokenSilent och om detta misslyckas anropar du ett interaktivt API i stället.
acquireTokenSilent söker efter en giltig token i cacheminnet, och om den är nära att upphöra att gälla eller inte finns försöker du automatiskt uppdatera den åt dig med den cachelagrade uppdateringstoken. Du kan läsa mer om hur du använder acquireTokenSilenthär.
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
});
Använda åtkomsttoken
När du har hämtat åtkomsttoken måste du inkludera den i Authorization rubriken som en ägartoken för begäran till den resurs som du hämtade token för, enligt nedan:
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
});
Metodtips för anskaffning av MSAL-token
Nedan följer bästa praxis för att hämta token med MSAL och undvika fel, prestandaförsämringar och problem med användbarheten. Vissa scenarier kan ge undantag till dessa.
Använda en enskild PublicClientApplication-instans
Instansiera en PublicClientApplication per program och använd samma instans i hela appen. Detta säkerställer att det finns en enda sanningskälla för vad MSAL utför vid en viss tidpunkt (se: MSAL-händelser) och eliminerar risken för att distinkta appobjekt gör parallella interaktiva begäranden eller potentiella cachekonflikter, vilket kan bryta appar, minska prestanda eller hindra användarupplevelsen.
Vänta alltid på att löftena ska lösas
Alla MSAL acquireToken* samt login* API:er utför asynkrona åtgärder och returnerar löften. Du bör alltid vänta tills dessa löften har lösts innan du utför andra uppgifter som är beroende av autentiseringstillstånd eller token, till exempel återgivning av användarinformation, anrop till ett skyddat API eller anrop till andra MSAL-API:er.
Försök med tyst begäran först och sedan interaktivt
När du begär tokener ska du alltid först använda acquireTokenSilent och falla tillbaka på interaktiv tokeninhämtning vid behov (t.ex. när InteractionRequiredAuthError utlöses).
Samtidiga tysta begäranden tillåts. Om två eller flera tysta begäranden görs samtidigt, skulle bara en gå till nätverket (om det behövs), men alla skulle få svaret, så länge dessa begäranden är för samma begäransparametrar (t.ex. omfång).
Samtidiga interaktiva begäranden tillåts inte . Om två eller flera interaktiva begäranden görs samtidigt startar endast den första en interaktion, medan resten misslyckas med interaction_in_progress fel. Vi rekommenderar att du bekantar dig med det här felet och eventuella åtgärder för att undvika att stöta på det i dina program.
Gör en tokenbegäran per resurs
Du kan bara begära åtkomsttoken för en resurs i taget (se resurser och omfång). Om det behövs kan du be användaren att godkänna omfång (behörigheter) som krävs av mer än en resurs med hjälp av parametern extraScopesToConsent i begärandeobjektet. Åtkomsttoken för scope som användaren redan har samtyckt till kan hämtas utan användarinteraktion.