Comportamento della richiesta con MSAL.js
MSAL.js consente di passare un valore di prompt come parte dei relativi 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 sue credenziali alla richiesta, negando l'accesso Single Sign-On. |
none |
Garantisce che l'utente non visualizzi alcuna richiesta interattiva. 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 di OAuth dopo l'accesso dell'utente, che chiede 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 errore invalid_prompt
per i valori di prompt 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 al provider di identità il comportamento di autenticazione desiderato. Non influisce sul comportamento MSAL.js e MSAL.js non ha il controllo sulla modalità di gestione della richiesta da parte del servizio. 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 automatica, usare un metodo MSAL.js automatico (ssoSilent
, acquireTokenSilent
) e gestire eventuali errori login_required o interaction_required con un metodo interattivo (loginPopup
, loginRedirect
, acquireTokenPopup
, acquireTokenRedirect
).
In alcuni casi, tuttavia, il valore di prompt none
può essere usato insieme a un metodo interattivo MSAL.js per ottenere l'autenticazione automatica. Ad esempio, a causa delle restrizioni dei cookie di terze parti in alcuni browser, le richieste ssoSilent
avranno esito negativo nonostante una sessione utente attiva con Microsoft Entra ID. Come rimedio, è possibile passare il valore di prompt none
a una richiesta interattiva, ad esempio loginPopup
. MSAL.js aprirà quindi una finestra popup in Microsoft Entra ID e Microsoft Entra ID rispetterà il valore del prompt utilizzando il cookie di sessione esistente. In questo caso l'utente visualizzerà una breve finestra popup, ma non verrà richiesta l'immissione di informazioni di accesso.