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.
Si vous débutez avec MSAL, vous devez commencer ici. Si vous venez de MSAL v1.x, vous pouvez suivre ce guide pour mettre à jour votre code pour utiliser MSAL v2.x
1. Mettre à jour l’inscription d’application
Accédez au centre d’administration Microsoft Entra de votre locataire et passez en revue les inscriptions d’applications. Vous pouvez créer une inscription pour MSAL 2.x ou mettre à jour votre inscription existante pour l’inscription que vous utilisez pour MSAL 1.x.
2. Ajouter le msal-browser package à votre projet
À l’aide de npm, utilisez les éléments suivants :
npm install @azure/msal-browser
3. Mettre à jour votre code
Dans MSAL 1.x, vous avez créé une instance d’application comme suit :
import * as msal from "msal";
const msalInstance = new msal.UserAgentApplication(config);
Dans MSAL 2.x, vous pouvez le mettre à jour pour utiliser le nouvel PublicClientApplication objet.
import * as msal from "@azure/msal-browser";
const msalInstance = new msal.PublicClientApplication(config);
Il peut y avoir de petites différences dans l’objet de configuration transmis. Si vous passez une configuration plus avancée à l’objet UserAgentApplication , consultez ici pour plus d’informations sur les nouvelles options de configuration d’objet d’application.
Les signatures d’objet de requête et de réponse ont changé : acquireTokenSilent une signature d’objet distincte des API interactives est désormais disponible. Pour plus d’informations sur la configuration des API de requête, consultez cette page.
La plupart des API de MSAL 1.x ont été transférées vers MSAL 2.x sans modification. Certaines fonctions ont été supprimées :
handleRedirectCallbackurlContainsHashgetCurrentConfigurationgetLoginInProgressgetAccountgetAccountStateisCallback
Dans MSAL 2.x, la gestion de la réponse à partir du hachage est une opération asynchrone, car MSAL effectue un échange de jetons dès qu’il analyse le code d’autorisation de la réponse. En raison de cela, lors de l’exécution d’appels de redirection, MSAL fournit la handleRedirectPromise fonction qui retourne une promesse qui se résout lorsque la redirection a été entièrement gérée par MSAL. Lors de l’utilisation d’une méthode de redirection, la page utilisée comme redirectUri doit être implémentée handleRedirectPromise pour s’assurer que la réponse est gérée et que les jetons sont mis en cache lors du retour de la redirection.
const myMSALObj = new msal.PublicClientApplication(msalConfig);
// Register Callbacks for Redirect flow
myMSALObj.handleRedirectPromise().then((tokenResponse) => {
let accountObj = null;
if (tokenResponse !== null) {
accountObj = tokenResponse.account;
const id_token = tokenResponse.idToken;
const access_token = tokenResponse.accessToken;
} else {
const currentAccounts = myMSALObj.getAllAccounts();
if (!currentAccounts || currentAccounts.length === 0) {
// No user signed in
return;
} else if (currentAccounts.length > 1) {
// More than one user signed in, find desired user with getAccountByUsername(username)
} else {
accountObj = currentAccounts[0];
}
}
const username = accountObj.username;
}).catch((error) => {
handleError(error);
});
function signIn() {
myMSALObj.loginRedirect(loginRequest);
}
async function getTokenRedirect(request) {
return await myMSALObj.acquireTokenSilent(request).catch(error => {
this.logger.info("silent token acquisition fails. acquiring token using redirect");
// fallback to interaction when silent call fails
return myMSALObj.acquireTokenRedirect(request)
});
}
Lors des appels loginPopup, acquireTokenPopup ou acquireTokenSilent, vous pouvez attendre que la promesse soit résolue.
const myMSALObj = new msal.PublicClientApplication(msalConfig);
async function signIn(method) {
try {
const loginResponse = await myMSALObj.loginPopup(loginRequest);
} catch (err) {
handleError(error);
}
const currentAccounts = myMSALObj.getAllAccounts();
if (!currentAccounts || currentAccounts.length === 0) {
// No user signed in
return;
} else if (currentAccounts.length > 1) {
// More than one user signed in, find desired user with getAccountByUsername(username)
} else {
accountObj = currentAccounts[0];
}
}
async function getTokenPopup(request) {
return await myMSALObj.acquireTokenSilent(request).catch(async (error) => {
this.logger.info("silent token acquisition fails. acquiring token using popup");
// fallback to interaction when silent call fails
return await myMSALObj.acquireTokenPopup(request).catch(error => {
handleError(error);
});
});
}
Pour plus d’informations sur l’utilisation, consultez la documentation relative à la connexion et à l’acquisition de jetons .
Les jetons d’actualisation sont désormais renvoyés dans les réponses de jeton et sont utilisés par la bibliothèque pour renouveler les jetons d’accès sans interaction ni utilisation d’iframes. Pour plus d’informations sur le renouvellement des jetons, consultez la documentation sur les durées de vie des jetons.
Toutes les autres API doivent fonctionner comme avant. Il est recommandé d’examiner l’exemple par défaut pour voir un exemple de travail msAL 2.0.