Een toegangstoken verkrijgen en gebruiken

Voordat u een toegangstoken verkrijgt, moet u weten hoe u het toepassingsobject initialiseert. Het is ook van cruciaal belang om inzicht te krijgen in de relatie tussen toegangstokens en resources.

In MSAL kunt u toegangstokens ophalen voor de API's die uw app nodig heeft om aan te roepen met behulp van de acquireToken* methoden die door de bibliotheek worden geleverd. De acquireToken* methoden abstraheren de twee stappen voor het verkrijgen van tokens met de OAuth 2.0-autorisatiecodestroom:

  1. een aanvraag indienen bij Microsoft Entra ID om een authorization code te verkrijgen
  2. die code uitwisselen voor een toegangstoken die de scopes bevat waarvoor de gebruiker toestemming heeft gegeven

Een toegangstoken verkrijgen

Een interactietype kiezen

Kijk hier als u twijfelt over de verschillen tussen acquireTokenRedirect en acquireTokenPopup.

Het aanvraagobject voorbereiden

U moet een aanvraagobject doorgeven aan de acquireToken* API's. Met dit object kunt u verschillende parameters in de aanvraag gebruiken. Zie hier voor meer informatie over de aanvraagobjectparameters. Scopes zijn vereist bij alle acquireToken*-aanroepen.

De cache controleren

MSAL gebruikt een cache om tokens op te slaan op basis van specifieke parameters, waaronder bereiken, resource en instantie, en haalt het token op uit de cache wanneer dat nodig is. Het kan ook stille verlenging van deze tokens uitvoeren wanneer ze zijn verlopen. MSAL maakt deze functionaliteit beschikbaar via de acquireTokenSilent methode.

Nadat u bent aangemeld met een van de ssoSilent- of login*-API’s, zal de cache een set ID-, toegangs- en refreshtokens bevatten. Telkens wanneer u een toegangstoken nodig hebt, moet u acquireTokenSilent aanroepen en als dit mislukt, moet u in plaats daarvan een interactieve API aanroepen. acquireTokenSilent zoekt naar een geldig token in de cache en als het bijna verloopt of niet bestaat, probeert u het automatisch te vernieuwen met behulp van het vernieuwingstoken in de cache. Meer informatie over het gebruik acquireTokenSilentvindt u hier.

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
});

Het toegangstoken gebruiken

Nadat u het toegangstoken hebt opgehaald, moet u het in de Authorization header opnemen als bearer-token voor de aanvraag voor de resource waarvoor u het token hebt verkregen, zoals hieronder wordt weergegeven:

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
    });

Best practices voor het verkrijgen van MSAL-tokens

Hier volgen best practices voor het verkrijgen van tokens met MSAL om fouten, prestatietreffers en bruikbaarheidsproblemen te voorkomen. Bepaalde scenario's kunnen uitzonderingen op deze scenario's bieden.

Eén PublicClientApplication-exemplaar gebruiken

Instantieer één PublicClientApplication per toepassing en gebruik hetzelfde exemplaar in uw app. Dit zorgt ervoor dat er één bron van waarheid is voor wat MSAL op elk gewenst moment uitvoert (zie: MSAL-gebeurtenissen) en elimineert de kans op afzonderlijke app-objecten die parallelle interactieve aanvragen of mogelijke cacheconflicten maken, waardoor apps kunnen worden verbroken, de prestaties kunnen worden verminderd of de gebruikerservaring wordt belemmerd.

Altijd wachten tot de beloftes zijn opgelost

Zowel alle MSAL acquireToken* als login* API’s voeren asynchrone bewerkingen uit en geven promises terug. U moet altijd wachten tot deze toezeggingen moeten worden opgelost voordat u andere taken uitvoert die afhankelijk zijn van de verificatiestatus of tokens, zoals het weergeven van gebruikersgegevens, het aanroepen van een beveiligde API of het aanroepen van andere MSAL-API's.

Probeer eerst een stille aanvraag en vervolgens interactief

Wanneer u tokens aanvraagt, gebruikt u altijd eerst acquireTokenSilent, waarbij u zo nodig terugvalt op interactieve tokenverwerving (bijvoorbeeld wanneer de InteractionRequiredAuthError wordt opgeworpen).

Gelijktijdige stille aanvragen zijn toegestaan. Als er gelijktijdig twee of meer stille verzoeken worden gedaan, wordt er maar één via het netwerk verzonden (indien nodig), maar krijgen ze allemaal het antwoord, zolang die verzoeken dezelfde aanvraagparameters hebben (bijvoorbeeld scopes).

Gelijktijdige interactieve aanvragen zijn niet toegestaan. Als er gelijktijdig twee of meer interactieve aanvragen worden gedaan, begint slechts de eerste een interactie, terwijl de rest mislukt met interaction_in_progress fout. We raden u aan vertrouwd te raken met deze fout en mogelijke oplossingen om te voorkomen dat deze in uw toepassingen wordt gebruikt.

Eén tokenaanvraag per resource maken

U kunt alleen toegangstokens voor één resource tegelijk aanvragen (zie resources en scopes). Indien nodig kunt u de gebruiker om toestemming vragen voor scopes (machtigingen) die vereist zijn voor meer dan één resource met behulp van de parameter extraScopesToConsent in het requestobject. Toegangstokens voor scopes waarvoor eerder toestemming is gegeven, kunnen geruisloos worden verkregen.

Volgende stappen