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.
Antes de adquirir un token de acceso, asegúrese de comprender cómo inicializar el objeto de aplicación. También es fundamental comprender la relación entre los tokens de acceso y los recursos.
En MSAL, puede obtener tokens de acceso para las API a las que la aplicación necesita llamar mediante los acquireToken* métodos proporcionados por la biblioteca. Los acquireToken* métodos abstraen los 2 pasos necesarios para adquirir tokens con el flujo de código de autorización de OAuth 2.0:
- realizar una solicitud a Microsoft Entra ID para obtener un
authorization code - intercambiar ese código para un token de acceso que contiene los ámbitos con consentimiento del usuario
Adquisición de un token de acceso
Elegir un tipo de interacción
Vea aquí si no está seguro de las diferencias entre acquireTokenRedirect y acquireTokenPopup.
Preparación del objeto de solicitud
Debe pasar un objeto de petición a las API acquireToken*. Este objeto permite usar parámetros diferentes en la solicitud. Consulte aquí para obtener más información sobre los parámetros del objeto de solicitud. Los ámbitos son necesarios para todas las llamadas acquireToken*.
Comprobación de la caché
MSAL usa una memoria caché para almacenar tokens en función de parámetros específicos, incluidos ámbitos, recursos y autoridad, y recuperará el token de la memoria caché cuando sea necesario. También puede realizar una renovación silenciosa de esos tokens cuando hayan expirado. MSAL expone esta funcionalidad a través del acquireTokenSilent método .
Una vez que haya iniciado sesión con una de las ssoSilent API o login* , la memoria caché contendrá un conjunto de identificadores, tokens de acceso y actualización. Cada vez que necesite un token de acceso, debe llamar acquireTokenSilent a y, si se produce un error, llame a una API interactiva en su lugar.
acquireTokenSilent buscará un token válido en la memoria caché y, si está cerca de expirar o no existe, intentará actualizarlo automáticamente con el token de actualización almacenado en caché. Puede obtener más información sobre cómo usar acquireTokenSilentaquí.
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
})
Redireccionar
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
});
Uso del token de acceso
Una vez que haya recuperado el token de acceso, debe incluirlo en el encabezado Authorization como token de portador en la solicitud al recurso para el que obtuvo el token, como se muestra a continuación:
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
});
Procedimientos recomendados de adquisición de tokens de MSAL
A continuación se indican los procedimientos recomendados para obtener tokens con MSAL y evitar errores, problemas de rendimiento y problemas de usabilidad. Algunos escenarios pueden proporcionar excepciones a estos.
Uso de una única instancia de PublicClientApplication
Cree una instancia de una PublicClientApplication por aplicación y use la misma instancia en toda la aplicación. Esto garantiza que hay una única fuente de verdad para lo que MSAL está realizando en cualquier momento dado (vea: eventos MSAL) y elimina la posibilidad de que distintos objetos de aplicación realicen solicitudes interactivas paralelas o posibles conflictos de caché, lo que podría interrumpir las aplicaciones, reducir el rendimiento o dificultar la experiencia del usuario.
Espere siempre a que las promesas se resuelvan
Todas las API de MSAL acquireToken* así como las API login* realizan operaciones asíncronas y devuelven promesas. Siempre debe esperar a que estas promesas se resuelvan antes de realizar otras tareas que dependan del estado o los tokens de autenticación, como representar información del usuario, llamar a una API protegida o llamar a otras API de MSAL.
Intentar primero la solicitud silenciosa y después la interactiva
Al solicitar tokens, use siempre acquireTokenSilent en primer lugar y, si es necesario, recurra a la adquisición interactiva de tokens (por ejemplo, cuando se produce la excepción InteractionRequiredAuthError).
Se permiten solicitudes silenciosas simultáneas. Si se realizan dos o más solicitudes silenciosas simultáneamente, solo una se dirigiría a la red (si es necesario), pero todas recibirían la respuesta, siempre y cuando esas solicitudes sean para los mismos parámetros de solicitud (por ejemplo, ámbitos).
No se permiten solicitudes interactivas simultáneas. Si se realizan dos o más solicitudes interactivas simultáneamente, solo la primera iniciará una interacción, mientras que el resto fallará con el error interaction_in_progress. Recomendamos familiarizarse con este error y con los posibles remedios para evitar encontrárselo en sus aplicaciones.
Realización de una solicitud de token por recurso
Solo puede solicitar tokens de acceso para un recurso a la vez (consulte recursos y ámbitos). Si es necesario, puede pedir el consentimiento del usuario a los ámbitos (permisos) necesarios para más de un recurso mediante el extraScopesToConsent parámetro en el objeto de solicitud. Los tokens de acceso para ámbitos con consentimiento previo se pueden adquirir de forma silenciosa.