Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wenn Sie mit MSAL noch nicht fertig sind, sollten Sie hier beginnen. Wenn Sie von MSAL v1.x stammen, können Sie diesem Leitfaden folgen, um Ihren Code für die Verwendung von MSAL v2.x zu aktualisieren.
1. Aktualisieren der Anwendungsregistrierung
Wechseln Sie zum Microsoft Entra Admin Center für Ihren Mandanten, und überprüfen Sie die App-Registrierungen. Sie können eine neue Registrierung für MSAL 2.x erstellen oder Ihre vorhandene Registrierung für die Registrierung aktualisieren, die Sie für MSAL 1.x verwenden.
2. Hinzufügen des msal-browser Pakets zu Ihrem Projekt
Verwenden Sie mit npm Folgendes:
npm install @azure/msal-browser
3. Aktualisieren Des Codes
In MSAL 1.x haben Sie eine Anwendungsinstanz wie folgt erstellt:
import * as msal from "msal";
const msalInstance = new msal.UserAgentApplication(config);
In MSAL 2.x können Sie dies aktualisieren, um das neue PublicClientApplication Objekt zu verwenden.
import * as msal from "@azure/msal-browser";
const msalInstance = new msal.PublicClientApplication(config);
Möglicherweise gibt es einige kleine Unterschiede im Konfigurationsobjekt, das übergeben wird. Wenn Sie eine erweiterte Konfiguration an das UserAgentApplication Objekt übergeben, finden Sie hier weitere Informationen zu neuen App-Objektkonfigurationsoptionen.
Anforderungs- und Antwortobjektsignaturen wurden geändert – acquireTokenSilent verfügt jetzt über eine separate Objektsignatur von den interaktiven APIs. Weitere Informationen zum Konfigurieren der Anforderungs-APIs finden Sie hier .
Die meisten APIs von MSAL 1.x wurden ohne Änderung an MSAL 2.x weitergeleitet. Einige Funktionen wurden entfernt:
handleRedirectCallbackurlContainsHashgetCurrentConfigurationgetLoginInProgressgetAccountgetAccountStateisCallback
In MSAL 2.x ist die Behandlung der Antwort vom Hash ein asynchroner Vorgang, da MSAL einen Tokenaustausch durchführt, sobald der Autorisierungscode von der Antwort analysiert wird. Aus diesem Fall stellt MSAL beim Ausführen von Umleitungsaufrufen die handleRedirectPromise Funktion bereit, die eine Zusage zurückgibt, die aufgelöst wird, wenn die Umleitung vollständig von MSAL verarbeitet wurde. Wenn Sie eine Umleitungsmethode verwenden, muss die als redirectUri verwendete Seite handleRedirectPromise implementieren, um sicherzustellen, dass die Antwort verarbeitet und Token beim Zurückkehren von der Umleitung zwischengespeichert werden.
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)
});
}
Bei loginPopup, acquireTokenPopup oder acquireTokenSilent-Aufrufen können Sie warten, bis das Promise aufgelöst ist.
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);
});
});
}
Ausführlichere Informationen zur Verwendung finden Sie in der Dokumentation zur Anmeldung und zum Abrufen eines Tokens.
Aktualisierungstoken werden jetzt als Teil der Tokenantworten zurückgegeben und von der Bibliothek verwendet, um Zugriffstoken ohne Interaktion oder die Verwendung von iframes zu verlängern. Weitere Informationen zum Verlängern von Token finden Sie in den Dokumenten zur Tokenlebensdauer .
Alle anderen APIs sollten wie zuvor funktionieren. Es wird empfohlen, einen Blick auf das Standardbeispiel zu werfen, um ein funktionsfähiges Beispiel für MSAL 2.0 zu sehen.