Promptgedrag met MSAL.js
MSAL.js staat het doorgeven van een promptwaarde toe als onderdeel van de aanmeldings- of tokenaanvraagmethoden. Op basis van uw toepassingsscenario kunt u het gedrag van de Microsoft Entra-prompt voor een aanvraag aanpassen door de promptparameter in te stellen in het aanvraagobject:
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
});
Ondersteunde promptwaarden
De volgende promptwaarden kunnen worden gebruikt bij verificatie met het Microsoft Identity Platform:
Parameter | Gedrag |
---|---|
login |
Hiermee dwingt u de gebruiker hun referenties in die aanvraag in te voeren, waarbij eenmalige aanmelding wordt genegeerd. |
none |
Zorgt ervoor dat de gebruiker geen interactieve prompt wordt weergegeven. Als de aanvraag niet op de achtergrond kan worden voltooid met behulp van eenmalige aanmelding, retourneert het Microsoft Identity Platform een fout login_required of interaction_required . |
consent |
Hiermee wordt het dialoogvenster OAuth-toestemming geactiveerd nadat de gebruiker zich heeft aangemeld, waarbij de gebruiker wordt gevraagd machtigingen aan de app te verlenen. |
select_account |
Onderbreekt eenmalige aanmelding door een accountselectieervaring op te geven waarin alle accounts in een sessie worden vermeld of een optie om een ander account te kiezen. |
create |
Hiermee wordt een aanmeldingsdialoogvenster geactiveerd waarmee externe gebruikers een account kunnen maken. Zie voor meer informatie: Selfservice-registratie |
MSAL.js genereert een invalid_prompt
fout voor niet-ondersteunde promptwaarden:
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
Standaardpromptwaarden
Hieronder ziet u de standaardpromptwaarden die door MSAL.js worden gebruikt:
METHODE MSAL.js | Standaardprompt | Toegestane prompts |
---|---|---|
loginPopup |
N.v.t. | Alle |
loginRedirect |
N.v.t. | Alle |
ssoSilent |
none |
N/B (genegeerd) |
acquireTokenPopup |
N.v.t. | Alle |
acquireTokenRedirect |
N.v.t. | Alle |
acquireTokenSilent |
none |
N/B (genegeerd) |
Notitie
Houd er rekening mee dat de prompt een parameter op protocolniveau is en het gewenste verificatiegedrag aangeeft aan de id-provider. Dit heeft geen invloed op het gedrag van MSAL.js en MSAL.js heeft geen controle over hoe de service uiteindelijk de aanvraag afhandelt. In de meeste gevallen probeert Microsoft Entra ID de aanvraag te respecteren. Als dit niet mogelijk is, kan er een foutbericht worden geretourneerd of de opgegeven promptwaarde volledig worden genegeerd.
Interactieve aanvragen met prompt=geen
Wanneer u een stille aanvraag moet indienen, gebruikt u een stille MSAL.js-methode (ssoSilent
, acquireTokenSilent
), en verwerkt u eventuele login_required- of interaction_required-fouten met een interactieve methode (loginPopup
, loginRedirect
, acquireTokenPopup
, ). acquireTokenRedirect
In sommige gevallen kan de promptwaarde none
echter samen met een interactieve MSAL.js-methode worden gebruikt om stille verificatie te bereiken. Vanwege de cookiebeperkingen van derden in sommige browsers ssoSilent
mislukken aanvragen bijvoorbeeld ondanks een actieve gebruikerssessie met Microsoft Entra-id. Als oplossing kunt u de promptwaarde none
doorgeven aan een interactieve aanvraag, zoals loginPopup
. MSAL.js opent vervolgens een pop-upvenster voor Microsoft Entra ID en Microsoft Entra ID zal de promptwaarde respecteren door gebruik te maken van de bestaande sessiecookor. In dit geval ziet de gebruiker een kort pop-upvenster, maar wordt niet gevraagd om een referentievermelding.