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.
Bevor Sie ein Zugriffstoken erwerben, stellen Sie sicher, dass Sie wissen, wie Sie das Anwendungsobjekt initialisieren. Außerdem ist es wichtig, die Beziehung zwischen Zugriffstoken und Ressourcen zu verstehen.
In MSAL können Sie Zugriffstoken für die APIs abrufen, die Ihre App aufrufen muss, indem Sie die acquireToken* von der Bibliothek bereitgestellten Methoden verwenden. Die Methoden acquireToken* abstrahieren die zwei Schritte weg, die für den Abruf von Token mit dem OAuth 2.0-Autorisierungscode-Flow erforderlich sind:
- eine Anfrage an Microsoft Entra ID senden, um ein
authorization codezu erhalten - Diesen Code gegen ein Zugriffstoken eintauschen, das die vom Benutzer genehmigten Scopes enthält
Abrufen eines Zugriffstokens
Auswählen eines Interaktionstyps
Lesen Sie hier nach, wenn Sie sich bezüglich der Unterschiede zwischen acquireTokenRedirect und acquireTokenPopup nicht sicher sind.
Vorbereiten des Anforderungsobjekts
Sie müssen ein Anforderungsobjekt an die acquireToken* APIs übergeben. Mit diesem Objekt können Sie unterschiedliche Parameter in der Anforderung verwenden. Weitere Informationen zu den Anforderungsobjektparametern finden Sie hier . Scopes sind für alle acquireToken* Aufrufe erforderlich.
Überprüfen des Caches
MSAL verwendet einen Cache zum Speichern von Token basierend auf bestimmten Parametern, einschließlich Bereichen, Ressourcen und Autoritäten, und ruft das Token bei Bedarf aus dem Cache ab. Sie kann diese Token auch still erneuern, wenn sie abgelaufen sind. MSAL macht diese Funktionalität über die acquireTokenSilent Methode verfügbar.
Nachdem Sie sich mit einer der ssoSilent oder login* APIs angemeldet haben, enthält der Cache eine Reihe von ID-, Zugriffs- und Aktualisierungstoken. Jedes Mal, wenn Sie ein Zugriffstoken benötigen, sollten Sie aufrufen acquireTokenSilent , und wenn dies fehlschlägt, rufen Sie stattdessen eine interaktive API auf.
acquireTokenSilent sucht nach einem gültigen Token im Cache, und wenn es nah am Ablauf liegt oder nicht vorhanden ist, wird automatisch versucht, es für Sie mithilfe des zwischengespeicherten Aktualisierungstokens zu aktualisieren. Weitere Informationen zur Verwendung acquireTokenSilent finden Sie hier.
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
})
Umleitung
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
});
Verwenden des Zugriffstokens
Nachdem Sie das Zugriffstoken abgerufen haben, müssen Sie es in den Authorization Header als Bearertoken für die Anforderung an die Ressource einschließen, für die Sie das Token abgerufen haben, wie unten dargestellt:
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
});
Bewährte Methoden für die MSAL-Tokenerfassung
Im Folgenden werden bewährte Methoden zum Abrufen von Token mit MSAL beschrieben, um Fehler, Leistungstreffer und Benutzerfreundlichkeitsprobleme zu vermeiden. Bestimmte Szenarien stellen möglicherweise Ausnahmen davon bereit.
Verwenden einer einzelnen PublicClientApplication-Instanz
Instanziieren Sie eine PublicClientApplication pro Anwendung, und verwenden Sie dieselbe Instanz in ihrer gesamten App. Dadurch wird sichergestellt, dass es eine zentrale, verbindliche Quelle dafür gibt, was MSAL zu einem bestimmten Zeitpunkt ausführt (siehe: MSAL-Ereignisse), und es wird verhindert, dass unterschiedliche App-Objekte parallele interaktive Anfragen stellen oder potenzielle Cachekonflikte entstehen, die Apps beeinträchtigen, die Leistung verringern oder die Benutzererfahrung verschlechtern könnten.
Warten Sie immer, bis Zusagen aufgelöst werden.
Alle MSAL acquireToken* sowie login* APIs führen asynchrone Vorgänge und Rückgabezusagen aus. Sie sollten immer warten, bis diese Zusagen aufgelöst werden, bevor Sie andere Aufgaben ausführen, die von Authentifizierungsstatus oder Token abhängig sind, z. B. das Rendern von Benutzerinformationen, das Aufrufen einer geschützten API oder das Aufrufen anderer MSAL-APIs.
Versuchen Sie es zuerst mit einer Anfrage ohne Benutzereingriff, dann interaktiv
Wenn Sie Token anfordern, verwenden Sie acquireTokenSilent immer zuerst, und kehren Sie bei Bedarf auf die interaktive Tokenerfassung zurück (z. B. wenn der InteractionRequiredAuthError Vorgang ausgelöst wird).
Gleichzeitige stille Anfragen sind zulässig. Wenn zwei oder mehr stille Anfragen gleichzeitig gestellt werden, wird nur eine über das Netzwerk gesendet (falls erforderlich), aber alle erhalten dieselbe Antwort, solange diese Anfragen dieselben Anfrageparameter verwenden (z. B. Scopes).
Gleichzeitige interaktive Anforderungen sind nicht zulässig. Wenn zwei oder mehr interaktive Anfragen gleichzeitig gesendet werden, löst nur die erste eine Interaktion aus, während alle weiteren mit dem Fehler interaction_in_progress fehlschlagen. Wir empfehlen, sich mit diesem Fehler und möglichen Abhilfen vertraut zu machen, um in Ihren Anwendungen nicht darauf zu stoßen.
Erstellen einer Tokenanforderung pro Ressource
Sie können Zugriffstoken nur jeweils für eine Ressource anfordern (siehe Ressourcen und Bereiche). Bei Bedarf können Sie die Zustimmung des Benutzers zu Bereichen (Berechtigungen) anfordern, die von mehreren Ressourcen erforderlich sind, indem Sie den extraScopesToConsent Parameter im Anforderungsobjekt verwenden. Zugriffstoken für zuvor zugestimmte Bereiche können im Hintergrund abgerufen werden.