Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Las excepciones de MSAL.NET están pensadas para que los desarrolladores de aplicaciones solucionen problemas y no para mostrarlos a los usuarios finales. Los mensajes de excepción no se localizan.
Los distintos tipos de excepciones
| Exception | Description |
|---|---|
MsalException |
Clase base para las excepciones de MSAL. |
MsalClientException |
Errores que se producen en la propia biblioteca, por ejemplo, una configuración incompleta. |
MsalServiceException |
Representa los errores transmitidos por el proveedor de tokens (Microsoft Entra ID). Consulte errores de Microsoft Entra. Errores de servicio no disponibles (por ejemplo, HTTP 500), que indican un problema con el servicio, tienen el código de error. service_not_available |
MsalUiRequiredException |
Error especial Microsoft Entra que indica que el usuario debe iniciar sesión de forma interactiva. |
MSAL no detecta ninguna otra excepción. Los problemas de red, las cancelaciones, etc. se propagan a la aplicación.
MSAL genera MsalClientException para los errores que se producen en la biblioteca (por ejemplo, una configuración incorrecta) y MsalServiceException para los errores que se producen en el servicio o en el broker (por ejemplo, un secreto ha expirado).
Excepciones comunes
- Autenticación cancelada por el usuario (solo cliente público)
Al llamar a AcquireTokenInteractive, se invoca un navegador o el intermediario para gestionar la interacción del usuario. Si el usuario cierra este proceso o si presiona el botón Atrás del explorador, MSAL genera un MsalClientException con el código authentication_canceled de error (MsalError.AuthenticationCanceledError).
En Android, esta excepción también puede producirse si un explorador con pestañas no está disponible.
- Excepciones HTTP
Se espera que los desarrolladores implementen sus propias políticas de reintento al realizar llamadas a MSAL. MSAL realiza llamadas HTTP al servicio Microsoft Entra y se pueden producir errores ocasionales, por ejemplo, la red puede bajar o el servidor está sobrecargado. Las respuestas de código de estado HTTP 5xx se reintentan una vez.
Tipos de excepción
Al procesar excepciones, puede usar el propio tipo de excepción y el ErrorCode miembro para distinguir entre excepciones. Los valores de ErrorCode son constantes de MsalError.
También puede echar un vistazo a los campos de MsalClientException, MsalServiceException, MsalUiRequiredException.
En el caso de MsalServiceException, el error puede contener un código que puede encontrar en Códigos de error de autenticación y autorización.
MsalUiRequiredException
"UI Required" es una especialización de MsalServiceException denominada MsalUiRequiredException. Esto significa que ha intentado usar un método no interactivo para adquirir un token (por ejemplo, AcquireTokenSilent), pero MSAL no pudo hacerlo de forma silenciosa. esto puede deberse a:
- Tienes que iniciar sesión
- debe dar su consentimiento
- Debe pasar por una experiencia de autenticación multifactor.
Para corregirlo, llame a un método AcquireToken* que solicite al usuario, por ejemplo AcquireTokenInteractive , en clientes públicos, redirigir al usuario para iniciar sesión en sitios web o responder con un 401 en una API web.
Evaluación continua del acceso
Consulte Uso de las API habilitadas para evaluación de acceso continuo en las aplicaciones.
Administración de excepciones de desafío de reclamaciones en MSAL.NET
En algunos casos, cuando el administrador del inquilino de Microsoft Entra haya habilitado directivas de acceso condicional, tu aplicación deberá administrar excepciones de verificación de reclamaciones. Esto aparecerá como un MsalServiceException cuya propiedad Claims no estará vacía. Por ejemplo, si la directiva de acceso condicional requiere un dispositivo administrado (Intune), el error será algo como AADSTS53000: Your device is required to be managed to access this resource o algo similar.
Para administrar la verificación de reclamaciones, deberás utilizar el método WithClaims(String).
Políticas de reintentos
Consulte Retry-Policy