Undantag i MSAL.NET

Undantag i MSAL.NET är avsedda för apputvecklare att felsöka och inte för att visas för slutanvändare. Undantagsmeddelanden är inte lokaliserade.

De olika typerna av undantag

bild

Exception Description
MsalException Basklass för MSAL-undantag.
MsalClientException Fel som uppstår i själva biblioteket, till exempel en ofullständig konfiguration.
MsalServiceException Representerar fel som överförs av tokenprovidern (Microsoft Entra ID). Se Microsoft Entra fel. Tjänstens otillgängliga fel (t.ex. HTTP 500), som anger ett problem med tjänsten, har felkoden service_not_available
MsalUiRequiredException Särskilt Microsoft Entra fel som anger att användaren måste logga in interaktivt.

Inget annat undantag fångas av MSAL. Eventuella nätverksproblem, avbrott osv. vidarebefordras till applikationen.

MSAL utlöser MsalClientException för fel som uppstår i biblioteket (t.ex. felaktig konfiguration) och MsalServiceException för fel som uppstår på tjänstsidan eller i brokern (t.ex. att en hemlighet har gått ut).

Vanliga undantag

  1. Användaren avbröt autentiseringen (endast offentlig klient)

När AcquireTokenInteractive anropas aktiveras en webbläsare eller förmedlaren för att hantera användarinteraktionen. Om användaren stänger den här processen eller om användaren trycker på bakåtknappen i webbläsaren genererar MSAL en MsalClientException med felkoden authentication_canceled (MsalError.AuthenticationCanceledError).

I Android kan det här undantaget också inträffa om en webbläsare med flikar inte är tillgänglig.

  1. HTTP-undantag

Utvecklare förväntas implementera sina egna återförsöksprinciper när de anropar MSAL. MSAL gör HTTP-anrop till Microsoft Entra-tjänsten och enstaka fel kan inträffa, till exempel kan nätverket gå ner eller servern är överbelastad. Svar med HTTP-statuskoden 5xx försöks igen en gång.

Undantagstyper

När du bearbetar undantag kan du använda själva undantagstypen och ErrorCode medlemmen för att skilja mellan undantag. Värdena för ErrorCode är konstanter för MsalError.

Du kan också ta en titt på fälten MsalClientExceptioni , MsalServiceException, MsalUiRequiredException.

När det gäller MsalServiceExceptionkan felet innehålla en kod som du hittar i Felkoder för autentisering och auktorisering.

MsalUiRequiredException

"UI Required" är en specialisering av MsalServiceException med namnet MsalUiRequiredException. Det innebär att du har försökt använda en icke-interaktiv metod för att hämta en token (t.ex. AcquireTokenSilent), men MSAL kunde inte göra det tyst. Detta kan bero på att:

  • du behöver logga in
  • du måste samtycka
  • du måste gå igenom en multifaktorautentiseringsupplevelse.

För att åtgärda problemet anropar du en AcquireToken*-metod som uppmanar användaren, till exempel AcquireTokenInteractive i offentliga klienter, att omdirigera användaren till att logga in på webbplatser eller svara med en 401 i ett webb-API.

Utvärdering av kontinuerlig åtkomst

Se Använda API:er för kontinuerlig åtkomstutvärdering i dina program.

Hantera undantag för anspråksutmaningar i MSAL.NET

I vissa fall, när administratören för Microsoft Entra-klientorganisationen har aktiverat principer för villkorlig åtkomst, måste din applikation hantera undantag vid anspråksutmaningar. Detta visas som en MsalServiceException vars Claims-egenskap inte kommer att vara tom. Om principen för villkorlig åtkomst till exempel ska ha en hanterad enhet (Intune) blir felet ungefär som AADSTS53000: Your device is required to be managed to access this resource eller något liknande.

För att hantera anspråksutmaningen måste du använda WithClaims(String) metoden.

Återförsöksprinciper

Se Återförsöksprincip