Comportamiento de solicitud con MSAL.js

MSAL.js permite pasar un valor de solicitud como parte de sus métodos de solicitud de token o inicio de sesión. En función del escenario de la aplicación, para personalizar el comportamiento de solicitud de Microsoft Entra correspondiente a una solicitud, establezca el parámetro prompt en el objeto de solicitud:

import { PublicClientApplication } from "@azure/msal-browser";

const pca = new PublicClientApplication({
    auth: {
        clientId: "YOUR_CLIENT_ID"
    }
});

const loginRequest = {
    scopes: ["user.read"],
    prompt: 'select_account',
}

pca.loginPopup(loginRequest)
    .then(response => {
        // do something with the response
    })
    .catch(error => {
        // handle errors
    });

Valores de solicitud admitidos

Al autenticarse con la plataforma de identidad de Microsoft, puede usar los valores de solicitud siguientes:

Parámetro Comportamiento
login Obliga al usuario a escribir sus credenciales en esa solicitud, negando el inicio de sesión único.
none Garantiza que el usuario no verá ninguna solicitud interactiva. Si la solicitud no se puede completar sin notificaciones mediante el inicio de sesión único, la plataforma de identidad de Microsoft devuelve un error login_required o interaction_required.
consent Desencadena el diálogo de consentimiento de OAuth una vez que el usuario inicia sesión y le pide a este que conceda permisos a la aplicación.
select_account Interrumpe el inicio de sesión único al proporciona una experiencia de selección de cuentas en la que se muestran todas las cuentas de la sesión, o bien una opción para elegir una cuenta diferente.
create Desencadena un diálogo de registro que permite que usuarios externos creen una cuenta. Para más información, consulte: Registro de autoservicio.

MSAL.js generará un error invalid_prompt para cualquiera de los valores de solicitud no admitidos:

invalid_prompt_value: Supported prompt values are 'login', 'select_account', 'consent', 'create' and 'none'. Please see here for valid configuration options: https://azuread.github.io/microsoft-authentication-library-for-js/ref/modules/_azure_msal_common.html#commonauthorizationurlrequest Given value: my_custom_prompt

Valores de solicitud predeterminada

A continuación, se muestran los valores de solicitud predeterminada que MSAL.js usa:

Método de MSAL.js Solicitud predeterminada Solicitudes permitidas
loginPopup N/D Any
loginRedirect N/D Any
ssoSilent none N/D (se omite)
acquireTokenPopup N/D Any
acquireTokenRedirect N/D Any
acquireTokenSilent none N/D (se omite)

Nota

Tenga en cuenta que prompt es un protocolo de nivel de protocolo e indica el comportamiento de autenticación deseado al proveedor de identidades. No afecta el comportamiento de MSAL.js, y MSAL.js no tiene control sobre cómo el servicio controlará la solicitud en última instancia. En la mayoría de los casos, Microsoft Entra ID intentará cumplir con la solicitud. Si no es posible, podría devolver una respuesta de error, o bien ignorar por completo el valor de solicitud que se proporcionó.

Solicitudes compartidas con prompt=none

Por lo general, cuando necesite realizar una solicitud sin notificaciones, utilice un método de MSAL.js sin notificaciones (ssoSilent, acquireTokenSilent) y controle cualquier error de tipo login_required o interaction_required con un método interactivo (loginPopup, loginRedirect, acquireTokenPopup, acquireTokenRedirect).

Sin embargo, en algunos casos, el valor de solicitud none se puede usar junto con un método de MSAL.js interactivo para lograr la autenticación sin notificaciones. Por ejemplo, debido a las restricciones de las cookies de terceros en algunos exploradores, las solicitudes ssoSilent generarán un error a pesar de una sesión de usuario activa con Microsoft Entra ID. Como solución, puede pasar el valor de solicitud none a una solicitud interactiva, como loginPopup. Luego, MSAL.js abrirá una ventana emergente en Microsoft Entra ID y este usará la cookie de sesión existente para cumplir con el valor de la solicitud. En este caso, el usuario verá una ventana emergente breve, pero no se le solicitará que escriba ninguna credencia.

Pasos siguientes