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.