Eingabeaufforderungsverhalten mit MSAL.js

MSAL.js ermöglicht die Übergabe eines Eingabeaufforderungswerts als Teil seiner Anmelde- oder Token-Anforderungsmethoden. Basierend auf Ihrem Anwendungsszenario können Sie das Microsoft Entra-Eingabeaufforderungsverhalten für eine Anforderung anpassen, indem Sie den Parameter prompt im Anforderungsobjekt festlegen:

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

Unterstützte Eingabeaufforderungswerte

Die folgenden Eingabeaufforderungswerte können beim Authentifizieren mit der Microsoft Identity Platform verwendet werden:

Parameter Verhalten
login Zwingt den Benutzer, die Anmeldeinformationen bei dieser Anforderung einzugeben. Einmaliges Anmelden ist dadurch nicht möglich.
none Stellt sicher, dass dem Benutzer keine interaktive Eingabeaufforderung angezeigt wird. Wenn die Anforderung nicht über einmaliges Anmelden im Hintergrund abgeschlossen werden kann, gibt die Microsoft Identity Platform den Fehler login_required oder interaction_required zurück.
consent Löst nach dem Anmelden des Benutzers das OAuth-Zustimmungsdialogfeld aus, in dem der Benutzer aufgefordert wird, der App Berechtigungen zu gewähren.
select_account Unterbricht das einmalige Anmelden, indem eine Kontoauswahl bereitgestellt wird, die alle Konten in der Sitzung auflistet, oder eine Option zum Auswählen eines anderen Kontos insgesamt.
create Löst ein Registrierungsdialogfeld aus, mit dem externe Benutzer ein Konto erstellen können. Weitere Informationen finden Sie unter: Self-Service-Registrierung

MSAL.js löst einen invalid_prompt-Fehler für alle nicht unterstützten Eingabeaufforderungswerte aus:

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

Standardwerte für die Eingabeaufforderung

Im Folgenden werden Standardwerte für die Eingabeaufforderung angezeigt, die MSAL.js verwendet:

MSAL.js-Methode Standardmäßige Eingabeaufforderung Zulässige Eingabeaufforderungen
loginPopup Any
loginRedirect Any
ssoSilent none N/A (ignoriert)
acquireTokenPopup Any
acquireTokenRedirect Any
acquireTokenSilent none N/A (ignoriert)

Hinweis

Beachten Sie, dass die Eingabeaufforderung ein Parameter auf Protokollebene ist und dem Identitätsanbieter das gewünschte Authentifizierungsverhalten signalisiert. Sie wirkt sich nicht auf das Verhalten von MSAL.js aus, und MSAL.js hat keine Kontrolle darüber, wie der Dienst die Anforderung letztendlich verarbeitet. In den meisten Fällen versucht Microsoft Entra ID, die Anforderung zu erfüllen. Wenn dies nicht möglich ist, wird möglicherweise eine Fehlerantwort zurückgegeben oder der angegebene Eingabeaufforderungswert vollständig ignoriert.

Interaktive Anforderungen mit prompt=none

Wenn Sie eine unbeaufsichtigte Anforderung stellen müssen, verwenden Sie im Allgemeinen eine unbeaufsichtigte MSAL.js-Methode (ssoSilent, acquireTokenSilent) und behandeln Sie alle login_required- oder interaction_required-Fehler mit einer interaktiven Methode (loginPopup, loginRedirect, acquireTokenPopup, acquireTokenRedirect).

In einigen Fällen kann der Eingabeaufforderungswert none jedoch zusammen mit einer interaktiven MSAL.js-Methode verwendet werden, um eine automatische Authentifizierung zu erzielen. Aufgrund von Cookie-Einschränkungen bei Drittanbietern in einigen Browsern sind beispielsweise ssoSilent-Anforderungen trotz einer aktiven Benutzersitzung mit Microsoft Entra ID nicht erfolgreich. Als Abhilfe können Sie den Eingabeaufforderungswert none an eine interaktive Anforderung wie z. B. loginPopup übergeben. MSAL.js öffnet dann ein Popupfenster für Microsoft Entra ID, und Microsoft Entra ID berücksichtigt den Eingabeaufforderungswert, indem das vorhandene Sitzungscookie verwendet wird. In diesem Fall wird dem Benutzer ein kurzes Popup-Fenster angezeigt, wird aber nicht zum Eintrag von Anmeldeinformationen aufgefordert.

Nächste Schritte