Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Avant d’acquérir un jeton d’accès, assurez-vous de comprendre comment initialiser l’objet d’application. Il est également essentiel de comprendre la relation entre les jetons d’accès et les ressources.
Dans MSAL, vous pouvez obtenir des jetons d’accès pour les API que votre application doit appeler à l’aide des acquireToken* méthodes fournies par la bibliothèque. Les acquireToken* méthodes suppriment les 2 étapes impliquées dans l’acquisition de jetons avec le flux de code d’autorisation OAuth 2.0 :
- effectuer une demande à Microsoft Entra ID pour obtenir un
authorization code - échanger ce code pour un jeton d’accès contenant les étendues consentées par l’utilisateur
Acquisition d’un jeton d’accès
Choisir un type d’interaction
Voyez ici si vous êtes incertain sur les différences entre acquireTokenRedirect et acquireTokenPopup.
Préparer l’objet de requête
Vous devez transmettre un objet de requête aux acquireToken* API. Cet objet vous permet d’utiliser différents paramètres dans la requête. Pour plus d’informations sur les paramètres de l’objet de requête, consultez cet article . Des autorisations sont requises pour tous les appels acquireToken*.
Vérifier le cache
MSAL utilise un cache pour stocker des jetons basés sur des paramètres spécifiques, notamment les étendues, la ressource et l’autorité, et récupère le jeton à partir du cache si nécessaire. Il peut également effectuer un renouvellement silencieux de ces jetons lorsqu’ils ont expiré. MSAL expose cette fonctionnalité via la acquireTokenSilent méthode.
Une fois que vous vous êtes connecté à l’aide de l’une des API ssoSilent ou login*, le cache contiendra un ensemble de jetons d’identification, d’accès et d’actualisation. Chaque fois que vous avez besoin d’un jeton d’accès, vous devez appeler acquireTokenSilent et, si cela échoue, appelez plutôt une API interactive.
acquireTokenSilent recherche un jeton valide dans le cache et, s’il est proche de l’expiration ou n’existe pas, tente automatiquement de l’actualiser pour vous à l’aide du jeton d’actualisation mis en cache. Vous pouvez en savoir plus sur l’utilisation acquireTokenSilentici.
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
})
Rediriger
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
});
Utilisation du jeton d’accès
Une fois que vous avez récupéré le jeton d’accès, vous devez l’inclure dans l’en-tête Authorization en tant que jeton du porteur pour la demande à la ressource pour laquelle vous avez obtenu le jeton, comme indiqué ci-dessous :
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
});
Meilleures pratiques d’acquisition de jetons MSAL
Voici les meilleures pratiques pour acquérir des jetons avec MSAL pour éviter les erreurs, les performances et les problèmes d’utilisation. Certains scénarios peuvent fournir des exceptions à celles-ci.
Utiliser une seule instance PublicClientApplication
Instanciez une PublicClientApplication par application et utilisez la même instance dans votre application. Cela garantit qu’il existe une source unique de vérité pour ce que MSAL effectue à tout moment (voir : événements MSAL) et élimine le risque d’objets d’application distincts effectuant des requêtes interactives parallèles ou des conflits de cache potentiels, ce qui peut interrompre les applications, réduire les performances ou entraver l’expérience utilisateur.
Toujours attendre que les promesses se résolvent
Toutes les API MSAL acquireToken* ainsi que les API login* effectuent des opérations asynchrones et renvoient des promesses. Vous devez toujours attendre que ces promesses soient résolues avant d’effectuer d’autres tâches qui dépendent de l’état ou des jetons d’authentification, telles que le rendu des informations utilisateur, l’appel d’une API protégée ou l’appel d’autres API MSAL.
Essayez d’abord une demande silencieuse, puis interactive
Lors de la demande de jetons, utilisez toujours acquireTokenSilent d’abord, puis revenez à l’acquisition interactive de jetons si nécessaire (par exemple, lorsque l’exception InteractionRequiredAuthError est levée).
Les demandes silencieuses simultanées sont autorisées. Si deux demandes silencieuses ou plus sont effectuées simultanément, une seule est envoyée au réseau (si nécessaire), mais toutes reçoivent la réponse, tant que ces demandes concernent les mêmes paramètres de requête (par exemple, les étendues).
Les demandes interactives simultanées ne sont pas autorisées. Si deux requêtes interactives ou plus sont effectuées simultanément, seule la première lance une interaction, tandis que les autres échouent avec l’erreur interaction_in_progress. Nous vous recommandons de vous familiariser avec cette erreur et les solutions possibles pour éviter de les rencontrer dans vos applications.
Effectuer une demande de jeton par ressource
Vous ne pouvez demander que des jetons d’accès pour une seule ressource à la fois (consultez les ressources et les étendues). Si nécessaire, vous pouvez demander au consentement de l’utilisateur des étendues (autorisations) requises par plusieurs ressources à l’aide du extraScopesToConsent paramètre dans l’objet de requête. Les jetons d’accès pour les étendues précédemment consentées peuvent être acquis en mode silencieux.