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.
Die loadExternalTokens()-API
MSAL Browser hat ab Version 2.17.0 die loadExternalTokens()-API hinzugefügt, die das Laden von ID-, Zugriffs- und Aktualisierungstoken in den MSAL-Cache ermöglicht, die dann mithilfe von acquireTokenSilent() abgerufen werden können.
Hinweis: Dies ist ein erweitertes Feature, das nur zu Testzwecken in der Browserumgebung vorgesehen ist. Das Laden von Token in den Cache Ihrer Anwendung kann dazu führen, dass Ihre App nicht mehr funktioniert. Darüber hinaus empfehlen wir, loadExternalTokens() API mit Unit-Tests und Integrationstests zu verwenden. Informationen zu E2E-Tests finden Sie stattdessen in unserem TestingSample .
Die loadExternalTokens() API ist eine öffentliche API, die Apps zum Benutzerdefinierten Laden von Token in den MSAL-Cache erleichtert.
await loadExternalTokens(
config,
silentRequest,
serverResponse,
loadTokenOptions,
);
loadExternalTokens() nimmt eine Anforderung vom Typ SilentRequest, eine Antwort vom Typ ExternalTokenResponseund Optionen des Typs LoadTokenOptionsan.
Lesen Sie die Typdefinitionen für die jeweiligen Elemente, die aus @azure/msal-browser importiert werden können:
Laden von Token
Sie können eine beliebige Kombination aus ID-, Zugriffs- und Aktualisierungstoken für die Zwischenspeicherung bereitstellen, aber mindestens erfordert die loadExternalTokens API einen der folgenden Eingabeparameter, um Tokenzuordnungen zu identifizieren und den Cache entsprechend zu speichern:
- Ein
SilentRequestObjekt mit Kontoinformationen, OR - Ein
SilentRequestObjekt mit der Autorität UND einLoadTokenOptionsObjekt mitclientInfo, OR - Ein
SilentRequestObjekt mit der Autorität UND einem Serverantwortobjekt mitclient_info - Ein
SilentRequestObjekt mit der Autorität UND einem Serverantwortobjekt mitid_token
In den folgenden Beispielen wird gezeigt, dass Token einzeln geladen werden, Sie können jedoch eine beliebige 1, 2 oder alle 3 in einer einzigen Anforderung bereitstellen.
Laden von ID-Token
Zusätzlich zu den oben aufgeführten Parametern geben Sie Folgendes zum Laden eines ID-Tokens an:
- Eine Serverantwort mit dem
id_tokenFeld
Außerdem wird anhand der oben angegebenen Informationen ein Konto im Cache gespeichert.
Sehen Sie sich die folgenden Codebeispiele an:
const config: Configuration = {
auth: { clientId: "your-client-id" },
};
const silentRequest: SilentRequest = {
account: {
homeAccountId: "your-home-account-id",
environment: "login.microsoftonline.com",
tenantId: "your-tenant-id",
username: "test@contoso.com",
localAccountId: "your-local-account-id",
},
};
const serverResponse: ExternalTokenResponse = {
id_token: "id-token-here",
};
const loadTokenOptions: LoadTokenOptions = {};
const pca = new PublicClientApplication(config);
await loadExternalTokens(
config,
silentRequest,
serverResponse,
loadTokenOptions
);
// OR
const config: Configuration = {
auth: { clientId: "your-client-id" },
};
const silentRequest: SilentRequest = {
scopes: [],
authority: "https://login.microsoftonline.com/your-tenant-id",
};
const serverResponse: ExternalTokenResponse = {
id_token: "id-token-here",
};
const loadTokenOptions: LoadTokenOptions = {
clientInfo: "client-info-here",
};
const pca = new PublicClientApplication(config);
await loadExternalTokens(
config,
silentRequest,
serverResponse,
loadTokenOptions
);
// OR
const config: Configuration = {
auth: { clientId: "your-client-id" },
};
const silentRequest: SilentRequest = {
scopes: [],
authority: "https://login.microsoftonline.com/your-tenant-id",
};
const serverResponse: ExternalTokenResponse = {
id_token: "id-token-here",
client_info: "client-info-here",
};
const loadTokenOptions: LoadTokenOptions = {};
const pca = new PublicClientApplication(config);
await loadExternalTokens(
config,
silentRequest,
serverResponse,
loadTokenOptions
);
Laden von Zugriffstoken
Zusätzlich zu den oben aufgeführten Parametern geben Sie Folgendes zum Laden eines Zugriffstokens an:
- Eine Serverantwort mit einem
access_token,expires_in, ,token_typeundscope
Sehen Sie sich die folgenden Codebeispiele an:
const config: Configuration = {
auth: { clientId: "your-client-id" },
};
const silentRequest: SilentRequest = {
scopes: ["User.Read", "email"],
account: {
homeAccountId: "your-home-account-id",
environment: "login.microsoftonline.com",
tenantId: "your-tenant-id",
username: "test@contoso.com",
localAccountId: "your-local-account-id",
},
};
const serverResponse: ExternalTokenResponse = {
token_type: AuthenticationScheme.BEARER, // "Bearer"
scope: "User.Read email",
expires_in: 3599,
access_token: "access-token-here",
};
const loadTokenOptions: LoadTokenOptions = {
extendedExpiresOn: 6599,
};
const pca = new PublicClientApplication(config);
await loadExternalTokens(
config,
silentRequest,
serverResponse,
loadTokenOptions
);
Laden von Aktualisierungstoken
Zusätzlich zu den oben aufgeführten Parametern geben Sie Folgendes zum Laden eines Aktualisierungstokens an:
- Eine Serverantwort mit
refresh_tokenund optional mitrefresh_token_expires_in
Sehen Sie sich die folgenden Codebeispiele an:
const config: Configuration = {
auth: { clientId: "your-client-id" },
};
const silentRequest: SilentRequest = {
scopes: [],
account: {
homeAccountId: "your-home-account-id",
environment: "login.microsoftonline.com",
tenantId: "your-tenant-id",
username: "test@contoso.com",
localAccountId: "your-local-account-id",
},
};
const serverResponse: ExternalTokenResponse = {
refresh_token: "refresh-token-here",
refresh_token_expires_in: "86399",
};
const loadTokenOptions: LoadTokenOptions = {};
const pca = new PublicClientApplication(config);
await loadExternalTokens(
config,
silentRequest,
serverResponse,
loadTokenOptions
);