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.