Zachowanie monitu przy użyciu biblioteki MSAL.js

Biblioteka MSAL.js umożliwia przekazywanie wartości monitu w ramach metod żądania logowania lub tokenu. W zależności od scenariusza aplikacji możesz dostosować zachowanie monitu firmy Microsoft dla żądania, ustawiając parametr monitu w obiekcie żądania:

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

Obsługiwane wartości monitów

Podczas uwierzytelniania za pomocą Platforma tożsamości Microsoft można użyć następujących wartości monitu:

Parametr Zachowanie
login Wymusza na użytkowniku wprowadzanie poświadczeń w tym żądaniu, negując logowanie jednokrotne.
none Gwarantuje, że użytkownik nie jest wyświetlany z żadnym interakcyjnym monitem. Jeśli nie można ukończyć żądania w trybie dyskretnym przy użyciu logowania jednokrotnego, Platforma tożsamości Microsoft zwraca błąd login_required lub interaction_required.
consent Wyzwala okno dialogowe zgody OAuth po zalogowaniu się użytkownika z prośbą o przyznanie uprawnień aplikacji.
select_account Przerywa logowanie jednokrotne, zapewniając środowisko wyboru konta zawierające listę wszystkich kont w sesji lub opcję całkowitego wybrania innego konta.
create Wyzwala okno dialogowe rejestracji umożliwiające użytkownikom zewnętrznym tworzenie konta. Aby uzyskać więcej informacji, zobacz: Rejestracja samoobsługowa

Biblioteka MSAL.js zgłosi invalid_prompt błąd dla wszystkich nieobsługiwanych wartości monitów:

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

Domyślne wartości monitu

Poniżej przedstawiono domyślne wartości monitów używane przez bibliotekę MSAL.js:

MSAL.js, metoda Monit domyślny Dozwolone monity
loginPopup Nie dotyczy Dowolne
loginRedirect Nie dotyczy Dowolne
ssoSilent none Nie dotyczy (ignorowane)
acquireTokenPopup Nie dotyczy Dowolne
acquireTokenRedirect Nie dotyczy Dowolne
acquireTokenSilent none Nie dotyczy (ignorowane)

Uwaga

Należy pamiętać, że monit jest parametrem na poziomie protokołu i sygnalizuje żądane zachowanie uwierzytelniania dostawcy tożsamości. Nie ma to wpływu na zachowanie MSAL.js i MSAL.js nie ma kontroli nad tym, jak usługa ostatecznie obsłuży żądanie. W większości przypadków identyfikator Entra firmy Microsoft spróbuje uczcić żądanie. Jeśli nie jest to możliwe, może zwrócić odpowiedź o błędzie lub całkowicie zignorować daną wartość monitu.

Żądania interakcyjne z monitem=none

Ogólnie rzecz biorąc, gdy musisz utworzyć żądanie dyskretne, użyj dyskretnej metody MSAL.js (ssoSilent, ) i obsłuż wszelkie błędy login_required lub interaction_required z metodą interakcyjną (loginPopup, loginRedirect, acquireTokenPopup, acquireTokenRedirectacquireTokenSilent).

W niektórych przypadkach można jednak użyć wartości none monitu wraz z interaktywną metodą MSAL.js w celu uzyskania uwierzytelniania dyskretnego. Na przykład ze względu na ograniczenia plików cookie innych firm w niektórych przeglądarkach ssoSilent żądania kończą się niepowodzeniem pomimo aktywnej sesji użytkownika z identyfikatorem Entra firmy Microsoft. Jako rozwiązanie problemu możesz przekazać wartość none monitu do interakcyjnego żądania, takiego jak loginPopup. Biblioteka MSAL.js otworzy okno podręczne dla identyfikatora Entra firmy Microsoft, a identyfikator Entra firmy Microsoft będzie honorował wartość monitu, korzystając z istniejącego pliku cookie sesji. W takim przypadku użytkownik zobaczy krótkie okno podręczne, ale nie zostanie wyświetlony monit o wpis poświadczeń.

Następne kroki