Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La API loadExternalTokens()
MSAL Browser, a partir de la versión 2.17.0, ha añadido la API loadExternalTokens(), que permite cargar tokens de identificador, de acceso y de actualización en la caché de MSAL, que luego pueden recuperarse mediante acquireTokenSilent().
Nota: Se trata de una característica avanzada que está pensada solo para realizar pruebas en el entorno del explorador. Cargar tokens en la memoria caché de la aplicación puede provocar que la aplicación se interrumpa. Además, se recomienda loadExternalTokens() usar la API con pruebas unitarias e de integración. Para las pruebas de E2E, consulta nuestra TestingSample en su lugar.
La loadExternalTokens() API es una API pública que facilita las aplicaciones para cargar tokens personalizados en la memoria caché de MSAL.
await loadExternalTokens(
config,
silentRequest,
serverResponse,
loadTokenOptions,
);
loadExternalTokens() toma una solicitud de tipo SilentRequest, una respuesta de tipo ExternalTokenResponsey opciones de tipo LoadTokenOptions.
Consulte las definiciones de tipo para cada una de ellas, que se pueden importar desde @azure/msal-browser:
Carga de tokens
Puede proporcionar cualquier combinación de tokens de identificador, acceso y actualización para el almacenamiento en caché, pero, como mínimo, la loadExternalTokens API requiere uno de los siguientes conjuntos de parámetros de entrada para identificar las asociaciones de token y almacenar en caché adecuadamente:
- Objeto
SilentRequestcon información de cuenta, OR - Un objeto
SilentRequestcon la autoridad Y un objetoLoadTokenOptionsconclientInfo, O - Un objeto
SilentRequestcon autoridad Y un objeto de respuesta del servidor conclient_info - Un objeto
SilentRequestcon autoridad Y un objeto de respuesta del servidor conid_token
Los ejemplos siguientes muestran la carga individual de los tokens; sin embargo, puede proporcionar 1, 2 o los 3 en una sola solicitud.
Carga de tokens de identificador
Además de los parámetros enumerados anteriormente , proporcione lo siguiente para cargar un token de identificador:
- Una respuesta del servidor con el
id_tokencampo
También se establecerá una cuenta en la memoria caché en función de la información proporcionada anteriormente.
Consulte los ejemplos de código siguientes:
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
);
Carga de tokens de acceso
Además de los parámetros enumerados anteriormente , proporcione lo siguiente para cargar un token de acceso:
- Una respuesta del servidor con un
access_token,expires_in,token_typeyscope
Consulte los ejemplos de código siguientes:
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
);
Cargando tokens de actualización
Además de los parámetros enumerados anteriormente , proporcione lo siguiente para cargar un token de actualización:
- Una respuesta del servidor con un
refresh_tokeny, opcionalmente,refresh_token_expires_in
Consulte los ejemplos de código siguientes:
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
);