Condividi tramite


Comportamento pronto con MSAL.js

MSAL.js consente di passare un valore di prompt come parte dei suoi metodi di richiesta di login o token. In base allo scenario dell'applicazione, è possibile personalizzare il comportamento del prompt di Microsoft Entra per una richiesta impostando il parametro promptnell'oggetto richiesta:

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
    });

Valori dei prompt supportati

Quando si esegue l'autenticazione con Microsoft Identity Platform, è possibile usare i valori di prompt seguenti:

Parametro Comportamento
login Forza l'utente a immettere le credenziali per tale richiesta, negando l'accesso Single Sign-On.
none Assicura che l'utente non venga visualizzato alcun prompt interattivo. Se la richiesta non può essere completata automaticamente tramite Single Sign-On, Microsoft Identity Platform restituisce un errore login_required o interaction_required .
consent Attiva la finestra di dialogo di consenso OAuth dopo l'accesso dell'utente, chiedendo all'utente di concedere le autorizzazioni all'app.
select_account Interrompe il Single Sign-On fornendo un'esperienza di selezione dell'account che elenca tutti gli account nella sessione o offre l'opzione di scegliere un altro account.
create Attiva una finestra di dialogo di iscrizione che consente agli utenti esterni di creare un account. Per ulteriori informazioni, vedere: Iscrizione self-service

MSAL.js genererà un invalid_prompt errore per i valori di richiesta non supportati:

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

Valori di prompt predefiniti

Di seguito sono riportati i valori di prompt predefiniti usati MSAL.js:

metodo MSAL.js Prompt predefinito Richieste consentite
loginPopup Non disponibile Qualunque
loginRedirect Non disponibile Qualunque
ssoSilent none N/D (ignorato)
acquireTokenPopup Non disponibile Qualunque
acquireTokenRedirect Non disponibile Qualunque
acquireTokenSilent none N/D (ignorato)

Annotazioni

Si noti che prompt è un parametro a livello di protocollo e segnala il comportamento di autenticazione desiderato al provider di identità. Non influisce sul comportamento MSAL.js e MSAL.js non ha il controllo sul modo in cui il servizio gestirà infine la richiesta. Nella maggior parte dei casi, Microsoft Entra ID tenterà di rispettare la richiesta. Se non è possibile, può restituire una risposta di errore o ignorare completamente il valore del prompt specificato.

Richieste interattive con prompt=none

In genere, quando è necessario effettuare una richiesta invisibile all'utente, usare un metodo di MSAL.js invisibile all'utente (ssoSilent, acquireTokenSilent) e gestire eventuali errori di login_required o interaction_required con un metodo interattivo (loginPopup, loginRedirect, acquireTokenPopup, acquireTokenRedirect).

In alcuni casi, tuttavia, il valore none del prompt può essere usato insieme a un metodo interattivo MSAL.js per ottenere l'autenticazione invisibile all'utente. Ad esempio, a causa delle restrizioni dei cookie di terze parti in alcuni browser, ssoSilent le richieste avranno esito negativo nonostante una sessione utente attiva con l'ID Microsoft Entra. Come rimedio, è possibile passare il valore none del prompt a una richiesta interattiva, loginPopupad esempio . MSAL.js aprirà quindi una finestra popup per Microsoft Entra ID e Microsoft Entra ID rispetta il valore del prompt utilizzando il cookie di sessione esistente. In questo caso, l'utente visualizzerà una breve finestra popup, ma non verrà richiesto l'inserimento di credenziali.

Passaggi successivi