Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
The loadExternalTokens() API
MSAL Browser a partire dalla versione 2.17.0 ha aggiunto l'API loadExternalTokens() , che consente il caricamento di ID, l'accesso e l'aggiornamento dei token nella cache MSAL, che può quindi essere recuperato usando acquireTokenSilent().
Nota: si tratta di una funzionalità avanzata destinata solo ai test nell'ambiente del browser. Il caricamento dei token nella cache dell'applicazione può causare l'interruzione dell'app. Inoltre, consigliamo di utilizzare loadExternalTokens() API con test unitari e di integrazione. Per i test E2E, fai invece riferimento a TestingSample.
L'API loadExternalTokens() è un'API pubblica che consente alle app di caricare token personalizzati nella cache di MSAL.
await loadExternalTokens(
config,
silentRequest,
serverResponse,
loadTokenOptions,
);
loadExternalTokens() accetta una richiesta di tipo SilentRequest, una risposta di tipo ExternalTokenResponse e delle opzioni di tipo LoadTokenOptions.
Vedere le definizioni dei tipi per ognuna, che è possibile importare da @azure/msal-browser:
Caricamento di token
È possibile fornire qualsiasi combinazione di ID, token di accesso e aggiornamento per la memorizzazione nella cache, ma almeno l'API loadExternalTokens richiede uno dei set di parametri di input seguenti per identificare le associazioni di token e la cache in modo appropriato:
- Un oggetto
SilentRequestcon informazioni sull'account, oppure - Un oggetto
SilentRequestcon l'autorità E un oggettoLoadTokenOptionsconclientInfo, OPPURE - Un oggetto
SilentRequestcon l'autorità AND un oggetto di risposta del server conclient_info - Un oggetto
SilentRequestcon l'autorità E un oggetto di risposta del server conid_token
Gli esempi seguenti mostrano il caricamento dei token singolarmente, tuttavia, è possibile specificare qualsiasi 1, 2 o tutti i 3 in una singola richiesta.
Caricamento dei token ID
Oltre ai parametri elencati in precedenza , fornire quanto segue per caricare un token ID:
- Risposta del server con il
id_tokencampo
Un account verrà impostato anche nella cache in base alle informazioni fornite in precedenza.
Vedere gli esempi di codice seguenti:
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
);
Caricamento di token di accesso
Oltre ai parametri elencati in precedenza , fornire quanto segue per caricare un token di accesso:
- Una risposta del server con un
access_token, unexpires_in, untoken_typee unscope
Vedere gli esempi di codice seguenti:
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
);
Caricamento dei token di aggiornamento
Oltre ai parametri elencati in precedenza , fornire quanto segue per caricare un token di aggiornamento:
- Una risposta del server con un
refresh_tokene opzionalmenterefresh_token_expires_in
Vedere gli esempi di codice seguenti:
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
);