Share via


Fråga om beteende med MSAL.js

MSAL.js tillåter att ett promptvärde skickas som en del av metoderna för inloggning eller tokenbegäran. Baserat på ditt programscenario kan du anpassa Microsoft Entra-promptbeteendet för en begäran genom att ange promptparametern i begärandeobjektet:

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

Promptvärden som stöds

Följande promptvärden kan användas när du autentiserar med Microsofts identitetsplattform:

Parameter Funktionssätt
login Tvingar användaren att ange sina autentiseringsuppgifter för den begäran och negera enkel inloggning.
none Ser till att användaren inte visas med någon interaktiv fråga. Om begäran inte kan slutföras tyst med enkel inloggning returnerar Microsofts identitetsplattform ett login_required- eller interaction_required-fel.
consent Utlöser dialogrutan OAuth-medgivande när användaren har loggat in och ber användaren att bevilja behörigheter till appen.
select_account Avbryter enkel inloggning genom att tillhandahålla en kontovalsupplevelse som visar alla konton i sessionen eller ett alternativ för att välja ett helt annat konto.
create Utlöser en dialogruta för registrering som gör att externa användare kan skapa ett konto. Mer information finns i: Självbetjäningsregistrering

MSAL.js utlöser ett invalid_prompt fel för eventuella promptvärden som inte stöds:

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

Standardvärden för fråga

Följande visar standardvärden för fråga som MSAL.js använder:

MSAL.js-metod Standardprompt Tillåtna frågor
loginPopup Ej tillämpligt Alla
loginRedirect Ej tillämpligt Alla
ssoSilent none N/A (ignoreras)
acquireTokenPopup Ej tillämpligt Alla
acquireTokenRedirect Ej tillämpligt Alla
acquireTokenSilent none N/A (ignoreras)

Kommentar

Observera att prompten är en parameter på protokollnivå och signalerar önskat autentiseringsbeteende till identitetsprovidern. Det påverkar inte MSAL.js-beteendet och MSAL.js har inte kontroll över hur tjänsten i slutändan hanterar begäran. I de flesta fall försöker Microsoft Entra-ID:t att uppfylla begäran. Om detta inte är möjligt kan det returnera ett felsvar eller helt ignorera det angivna promptvärdet.

Interaktiva begäranden med prompt=none

När du behöver göra en tyst begäran använder du vanligtvis en tyst MSAL.js-metod (ssoSilent, acquireTokenSilent) och hanterar eventuella login_required - eller interaction_required-fel med en interaktiv metod (loginPopup, loginRedirect, acquireTokenPopup, acquireTokenRedirect).

I vissa fall kan dock promptvärdet none användas tillsammans med en interaktiv MSAL.js-metod för att uppnå tyst autentisering. På grund av cookiebegränsningarna från tredje part i vissa webbläsare ssoSilent misslyckas till exempel begäranden trots en aktiv användarsession med Microsoft Entra-ID. Som en åtgärd kan du skicka promptvärdet none till en interaktiv begäran, till exempel loginPopup. MSAL.js öppnar sedan ett popup-fönster till Microsoft Entra-ID och Microsoft Entra-ID kommer att respektera promptvärdet genom att använda den befintliga sessionscookien. I det här fallet ser användaren ett kort popup-fönster, men uppmanas inte att ange autentiseringsuppgifter.

Nästa steg