Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
As exceções em MSAL.NET são destinadas aos desenvolvedores de aplicativos para solucionar problemas e não para exibição para usuários finais. As mensagens de exceção não são localizadas.
Os diferentes tipos de exceções
| Exceção | Description |
|---|---|
MsalException |
Classe base para exceções MSAL. |
MsalClientException |
Erros que ocorrem na própria biblioteca, por exemplo, uma configuração incompleta. |
MsalServiceException |
Representa erros transmitidos pelo provedor de token (Microsoft Entra ID). Consulte erros do Microsoft Entra. Erros de serviço indisponíveis (por exemplo, HTTP 500), indicando um problema com o serviço, têm o código de erro service_not_available |
MsalUiRequiredException |
Erro de Microsoft Entra especial que indica que o usuário deve fazer logon interativamente. |
Nenhuma outra exceção é capturada pela MSAL. Quaisquer problemas de rede, cancelamentos etc. são propagados para o aplicativo.
O MSAL gera MsalClientException para erros que ocorrem na biblioteca (por exemplo, configuração incorreta) e MsalServiceException para erros que ocorrem no serviço ou no broker (por exemplo, um segredo expirado).
Exceções comuns
- Autenticação cancelada pelo usuário (somente cliente público)
Ao chamar AcquireTokenInteractive, um navegador ou o broker é acionado para lidar com a interação do usuário. Se o usuário fechar esse processo ou se ele apertar o botão voltar do navegador, a MSAL gerará um MsalClientException com o código authentication_canceled de erro (MsalError.AuthenticationCanceledError).
No Android, essa exceção também poderá ocorrer se um navegador com guias não estiver disponível.
- Exceções HTTP
Espera-se que os desenvolvedores implementem suas próprias políticas de nova tentativa ao fazer chamadas à MSAL. A MSAL faz chamadas HTTP para o serviço Microsoft Entra e falhas ocasionais podem ocorrer, por exemplo, a rede pode ficar inativa ou o servidor está sobrecarregado. As respostas de código de status HTTP 5xx são repetidas uma vez.
Tipos de exceção
Ao processar exceções, você pode usar o tipo de exceção em si e o ErrorCode membro para distinguir entre exceções. Os valores de ErrorCode são constantes de MsalError.
Você também pode dar uma olhada nos campos de MsalClientException, MsalServiceException. MsalUiRequiredException
No caso de MsalServiceException, o erro pode conter um código que você pode encontrar em códigos de erro de autenticação e autorização.
MsalUiRequiredException
A "interface do usuário necessária" é uma especialização de MsalServiceException chamada MsalUiRequiredException. Isso significa que você tentou usar um método não interativo de aquisição de um token (por exemplo, AcquireTokenSilent), mas a MSAL não pôde fazer isso silenciosamente. isso pode ser porque:
- você precisa entrar
- você precisa consentir
- você precisa passar por um processo de autenticação multifator.
Para corrigir, chame um método AcquireToken* que solicite a interação do usuário, por exemplo, AcquireTokenInteractive em clientes públicos; redirecione o usuário para fazer logon em sites ou responda com um 401 em uma API da Web.
Avaliação contínua de acesso
Veja como usar APIs habilitadas para Avaliação de Acesso Contínuo em seus aplicativos.
Tratamento das exceções de desafio de declaração no MSAL.NET
Em alguns casos, quando o administrador locatário do Microsoft Entra tiver habilitado políticas de acesso condicional, seu aplicativo precisará lidar com exceções de desafio de declaração. Isso aparecerá como MsalServiceException, cuja propriedade Claims não estará vazia. Por exemplo, se a política de acesso condicional for ter um dispositivo gerenciado (Intune), o erro será algo semelhante AADSTS53000: Your device is required to be managed to access this resource ou algo semelhante.
Para resolver o desafio de declaração, você precisará usar o método WithClaims(String).
Políticas de repetição
Consulte Retry-Policy