Compartir a través de


Comportamiento de solicitud con MSAL.js

MSAL.js permite pasar un valor de aviso como parte de sus métodos de inicio de sesión o solicitud de token. 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 al usuario no le aparecerá ningún mensaje interactivo. 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 predeterminados del indicador que utiliza MSAL.js:

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

Nota:

Tenga en cuenta que prompt es un parámetro a nivel de protocolo e indica el comportamiento de autenticación deseado al proveedor de identidad. 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 hacia Microsoft Entra ID y Microsoft Entra ID respetará el valor del aviso utilizando la cookie de sesión existente. En este caso, el usuario verá una ventana emergente breve, pero no se le solicitará que escriba ninguna credencia.

Pasos siguientes