Condividi tramite


Comportamento della richiesta con MSAL.js

MSAL.js consente di passare un valore di richiesta come parte dei metodi di richiesta di accesso o token. In base allo scenario dell'applicazione, è possibile personalizzare il comportamento del prompt di Microsoft Entra per una richiesta impostando il parametro prompt nell'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 l'accesso Single Sign-On fornendo un'esperienza di selezione dell'account che elenca tutti gli account nella sessione o un'opzione per scegliere completamente un account diverso.
create Attiva una finestra di dialogo di iscrizione che consente agli utenti esterni di creare un account. Per altre 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 da MSAL.js:

Metodo MSAL.js Prompt predefinito Richieste consentite
loginPopup N/D Any
loginRedirect N/D Any
ssoSilent none N/D (ignorato)
acquireTokenPopup N/D Any
acquireTokenRedirect N/D Any
acquireTokenSilent none N/D (ignorato)

Nota

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 di 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 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 MSAL.js interattivo 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 in 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à richiesta una voce di credenziale.

Passaggi successivi