Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Le eccezioni in MSAL.NET sono destinate agli sviluppatori di app per la risoluzione dei problemi e non per la visualizzazione agli utenti finali. I messaggi di eccezione non vengono localizzati.
Tipi diversi di eccezioni
| Eccezione | Description |
|---|---|
MsalException |
Classe di base per le eccezioni MSAL. |
MsalClientException |
Errori che si verificano nella libreria stessa, ad esempio una configurazione incompleta. |
MsalServiceException |
Rappresenta gli errori trasmessi dal provider di token (Microsoft Entra ID). Vedi errori di Microsoft Entra. Errori di servizio non disponibili (ad esempio HTTP 500), che indicano un problema con il servizio, hanno il codice di errore service_not_available |
MsalUiRequiredException |
Errore speciale Microsoft Entra che indica che l'utente deve accedere in modo interattivo. |
Nessun'altra eccezione viene intercettata da MSAL. Eventuali problemi di rete, annullamenti e così via vengono visualizzati nell'applicazione.
MSAL genera MsalClientException per gli errori che si verificano all'interno della libreria, ad esempio una configurazione non valida, e MsalServiceException per gli errori che si verificano dal lato del servizio o nel broker, ad esempio un segreto scaduto.
Eccezioni comuni
- Autenticazione annullata dall'utente (solo client pubblico)
Quando si chiama AcquireTokenInteractive, viene richiamato un browser o il broker per gestire l'interazione dell'utente. Se l'utente chiude questo processo o preme il pulsante Indietro del browser, MSAL genera un MsalClientException con il codice di errore authentication_canceled (MsalError.AuthenticationCanceledError).
In Android questa eccezione può verificarsi anche se un browser con schede non è disponibile.
- Eccezioni HTTP
Gli sviluppatori sono tenuti a implementare i propri criteri di ritentativo quando chiamano MSAL. MSAL effettua chiamate HTTP al servizio Microsoft Entra e possono verificarsi occasionalmente errori, ad esempio la rete può arrestarsi o il server è sovraccarico. Le risposte del codice di stato HTTP 5xx vengono ritentate una sola volta.
Tipi di eccezione
Durante l'elaborazione delle eccezioni, è possibile utilizzare il tipo di eccezione stesso e il ErrorCode membro per distinguere le eccezioni. I valori di ErrorCode sono costanti di MsalError.
È anche possibile esaminare i campi di MsalClientException, , MsalServiceExceptionMsalUiRequiredException.
Nel caso di MsalServiceException, l'errore potrebbe contenere un codice che è possibile trovare in Codici di errore di autenticazione e autorizzazione.
MsalUiRequiredException
"UI Required" è una specializzazione di MsalServiceException denominata MsalUiRequiredException. Ciò significa che si è tentato di usare un metodo non interattivo per acquisire un token (ad esempio AcquireTokenSilent), ma MSAL non è riuscito a farlo in modo invisibile all'utente. questo può essere dovuto a quanto segue:
- è necessario eseguire l'accesso
- è necessario fornire il consenso
- è necessario eseguire un'esperienza di autenticazione a più fattori.
Per risolvere il problema, chiamare un metodo AcquireToken* che richieda l'interazione dell'utente, ad esempio AcquireTokenInteractive nei client pubblici, reindirizzare l'utente alla pagina di accesso nei siti Web o restituire un 401 in un'API Web.
Valutazione dell'accesso continuo
Vedere Come usare le API abilitate per la valutazione dell'accesso continuo nelle applicazioni.
Gestione delle eccezioni di richiesta di attestazione in MSAL.NET
In alcuni casi, quando l'amministratore del tenant Microsoft Entra ha abilitato i criteri di accesso condizionale, l'applicazione dovrà gestire le eccezioni di richiesta di attestazione. Questo verrà visualizzato come un MsalServiceException la cui proprietà Claims non sarà vuota. Ad esempio, se nei criteri di accesso condizionale è richiesto un dispositivo gestito (Intune), l'errore sarà qualcosa come AADSTS53000: Your device is required to be managed to access this resource o qualcosa di simile.
Per gestire la contestazione della richiesta, è necessario utilizzare il metodo WithClaims(String).
Criteri di ripetizione dei tentativi
Vedi Retry-Policy