Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Wyjątki w MSAL.NET są przeznaczone dla deweloperów aplikacji do rozwiązywania problemów, a nie wyświetlania użytkownikom końcowym. Komunikaty o wyjątkach nie są zlokalizowane.
Różne typy wyjątków
| Exception | Description |
|---|---|
MsalException |
Klasa bazowa wyjątków MSAL. |
MsalClientException |
Błędy występujące w samej bibliotece, na przykład niekompletna konfiguracja. |
MsalServiceException |
Reprezentuje błędy przesyłane przez dostawcę tokenu (Microsoft Entra ID). Zobacz błędy Microsoft Entra. Błędy niedostępności usługi (np. HTTP 500), wskazujące problem z usługą, mają kod błędu service_not_available |
MsalUiRequiredException |
Specjalny błąd Microsoft Entra, który wskazuje, że użytkownik musi zalogować się interaktywnie. |
Żaden inny wyjątek nie jest obsługiwany przez bibliotekę MSAL. Wszelkie problemy z siecią, anulowania itp. są przekazywane do aplikacji.
Biblioteka MSAL zgłasza błędy MsalClientException w przypadku problemów występujących wewnątrz biblioteki (np. nieprawidłowej konfiguracji) oraz MsalServiceException w przypadku problemów występujących po stronie usługi lub w brokerze (np. klucz tajny wygasł).
Typowe wyjątki
- Uwierzytelnianie anulowane przez użytkownika (tylko klient publiczny)
Podczas wywoływania metody AcquireTokenInteractivejest wywoływana przeglądarka lub broker w celu obsługi interakcji z użytkownikiem. Jeśli użytkownik zamknie ten proces lub naciśnie przycisk Wstecz w przeglądarce, biblioteka MSAL wygeneruje element MsalClientException z kodem błędu authentication_canceled (MsalError.AuthenticationCanceledError).
W systemie Android ten wyjątek może również wystąpić, jeśli przeglądarka z kartami jest niedostępna .
- Wyjątki HTTP
Deweloperzy powinni zaimplementować własne zasady ponawiania prób podczas wywoływania MSAL. Biblioteka MSAL wykonuje wywołania HTTP do usługi Microsoft Entra i mogą sporadycznie występować awarie, na przykład sieć może przestać działać lub serwer może być przeciążony. Odpowiedzi kodu stanu HTTP 5xx są ponawiane raz.
Typy wyjątków
Podczas przetwarzania wyjątków można użyć samego typu wyjątku oraz składowej ErrorCode, aby odróżnić wyjątki. Wartości ErrorCode są stałymi MsalError.
Możesz również zapoznać się z polami MsalClientException, , MsalServiceExceptionMsalUiRequiredException.
W przypadku błędu MsalServiceExceptionmoże zawierać kod, który można znaleźć w kodach błędów uwierzytelniania i autoryzacji.
MsalUiRequiredException
"Wymagany interfejs użytkownika" to specjalizacja MsalServiceException o nazwie MsalUiRequiredException. Oznacza to, że próbowano użyć nieinterakcyjnej metody uzyskania tokenu (np. AcquireTokenSilent), ale MSAL nie mógł zrobić tego bez interakcji użytkownika. może to być spowodowane następującymi przyczynami:
- Musisz się zalogować
- musisz wyrazić zgodę
- Musisz przejść proces uwierzytelniania wieloskładnikowego.
Aby rozwiązać ten problem, wywołaj metodę AcquireToken*, która monituje użytkownika, na przykład AcquireTokenInteractive w przypadku klientów publicznych, przekierowuje użytkownika do logowania w witrynach internetowych lub odpowiada za pomocą adresu 401 w internetowym interfejsie API.
Ciągła ocena dostępu
Zobacz Jak korzystać z interfejsów API z włączoną oceną dostępu ciągłego w aplikacjach.
Obsługa wyjątków claim challenge w MSAL.NET
W niektórych przypadkach, gdy administrator dzierżawy usługi Microsoft Entra włączył zasady dostępu warunkowego, aplikacja będzie musiała obsługiwać wyjątki związane z wyzwaniem dotyczącym oświadczeń. To zostanie wyświetlone jako MsalServiceException, której właściwość Claims nie będzie pusta. Na przykład, jeśli zasada dostępu warunkowego wymaga urządzenia zarządzanego (Intune), błąd będzie brzmiał mniej więcej tak: AADSTS53000: Your device is required to be managed to access this resource lub coś podobnego.
Aby obsłużyć weryfikację roszczenia, należy użyć metody WithClaims(String).
Zasady ponawiania prób
Zobacz Retry-Policy