Ausnahmen in MSAL.NET

Ausnahmen in MSAL.NET sind für App-Entwickler für die Problembehandlung vorgesehen und nicht für die Anzeige von Endbenutzern. Ausnahmemeldungen werden nicht lokalisiert.

Die verschiedenen Arten von Ausnahmen

Bild

Exception Description
MsalException Basisklasse für MSAL-Ausnahmen.
MsalClientException Fehler, die in der Bibliothek selbst auftreten, z. B. eine unvollständige Konfiguration.
MsalServiceException Stellt Fehler dar, die vom Tokenanbieter (Microsoft Entra ID) übertragen werden. Siehe Microsoft Entra Fehler. Nicht verfügbare Fehler des Diensts (z. B. HTTP 500), die ein Problem mit dem Dienst angeben, weisen den Fehlercode auf. service_not_available
MsalUiRequiredException Spezieller Microsoft Entra Fehler, der angibt, dass sich der Benutzer interaktiv anmelden muss.

Keine andere Ausnahme wird von MSAL abgefangen. Alle Netzwerkprobleme, Abbrüche usw. werden an die Anwendung weitergegeben.

MSAL löst MsalClientException für Fehler aus, die innerhalb der Bibliothek auftreten (z. B. eine fehlerhafte Konfiguration), und MsalServiceException für Fehler, die auf Dienstseite oder im Broker auftreten (z. B. wenn ein Secret abgelaufen ist).

Allgemeine Ausnahmen

  1. Benutzer hat die Authentifizierung abgebrochen (nur für öffentliche Clients)

Beim Aufrufen AcquireTokenInteractivewird ein Browser oder der Broker aufgerufen, um die Benutzerinteraktion zu verarbeiten. Wenn der Benutzer diesen Prozess schließt oder wenn er auf die Schaltfläche "Browser zurück" klickt, generiert MSAL einen MsalClientException Fehlercode authentication_canceled (MsalError.AuthenticationCanceledError).

Unter Android kann diese Ausnahme auch auftreten, wenn ein Browser mit Registerkarten nicht verfügbar ist.

  1. HTTP-Ausnahmen

Es wird erwartet, dass Entwickler beim Aufrufen von MSAL ihre eigenen Wiederholungsrichtlinien selbst implementieren. MSAL führt HTTP-Aufrufe an den Microsoft Entra-Dienst durch, und gelegentliche Fehler können auftreten, z. B. kann das Netzwerk ausfallen oder der Server ist überlastet. HTTP 5xx-Statuscodeantworten werden einmal wiederholt.

Ausnahmetypen

Bei der Verarbeitung von Ausnahmen können Sie den Ausnahmetyp selbst und das ErrorCode Element verwenden, um zwischen Ausnahmen zu unterscheiden. Die Werte von ErrorCode sind Konstanten von MsalError.

Sie können sich auch die Felder von MsalClientException, MsalServiceException, MsalUiRequiredException ansehen.

Im Fall von MsalServiceException, kann der Fehler einen Code enthalten, den Sie in Authentifizierungs- und Autorisierungsfehlercodes finden können.

MsalUiRequiredException

Die „UI Required“ ist eine Spezialisierung von MsalServiceException namens MsalUiRequiredException. Dies bedeutet, dass Sie versucht haben, eine nicht interaktive Methode zum Abrufen eines Tokens (z. B. AcquireTokenSilent) zu verwenden, aber MSAL konnte es nicht im Hintergrund ausführen. dies kann darauf zurückzuführen sein:

  • Sie müssen sich anmelden
  • Sie müssen zustimmen
  • Sie müssen eine mehrstufige Authentifizierungserfahrung durchlaufen.

Zur Problembehebung rufen Sie eine AcquireToken*-Methode auf, die eine Benutzeraufforderung auslöst, z. B. AcquireTokenInteractive in öffentlichen Clients, leiten Sie den Benutzer auf Websites zur Anmeldung um oder geben Sie in einer Web-API einen 401-Statuscode zurück.

Kontinuierliche Zugriffsauswertung

Erfahren Sie , wie Sie aktivierte APIs in Ihren Anwendungen mit fortlaufender Zugriffsauswertung verwenden.

Behandeln von Ausnahmen bei Anspruchsaufforderungen in MSAL.NET

In einigen Fällen muss Ihre Anwendung, wenn der Microsoft Entra Mandantenadministrator Richtlinien für bedingten Zugriff aktiviert hat, Ausnahmen von Anspruchsabfragen behandeln. Dies wird als ein MsalServiceException angezeigt, dessen Claims-Eigenschaft nicht leer ist. Wenn die Richtlinie für den bedingten Zugriff beispielsweise ein verwaltetes Gerät (Intune) vorschreibt, lautet die Fehlermeldung etwa AADSTS53000: Your device is required to be managed to access this resource oder ähnlich.

Um die Anspruchsabfrage zu behandeln, müssen Sie die WithClaims(String) Methode verwenden.

Wiederholungsrichtlinien

Siehe "Wiederholungsrichtlinie"