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
, acquireTokenRedirect
acquireTokenSilent
).
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
- Logowanie jednokrotne przy użyciu biblioteki MSAL.js
- Obsługa błędów i wyjątków w pliku MSAL.js
- Obsługa funkcji ITP w przeglądarce Safari i innych przeglądarkach, w których pliki cookie innych firm są blokowane
- Przepływ kodu autoryzacji OAuth 2.0 w Platforma tożsamości Microsoft
- Połączenie OpenID w Platforma tożsamości Microsoft