Compartir a través de


Solucionar los mensajes de error de inicio de sesión único (SSO)

En este artículo se proporcionan directrices para solucionar problemas relacionados con el inicio de sesión único (SSO) en los complementos de Office y para hacer que el complemento habilitado para SSO pueda controlar con solidez errores o condiciones especiales.

Nota:

La API de inicio de sesión único es actualmente compatible con Word, Excel, PowerPoint y Outlook. Para más información sobre dónde se admite en este momento la API de inicio de sesión único, vea Conjuntos de requisitos de la API de identidad. Si está trabajando con un complemento de Outlook, asegúrese de habilitar la autenticación moderna para el inquilino de Microsoft 365. Para obtener información sobre cómo hacerlo, vea Habilitar o deshabilitar la autenticación moderna para Outlook en Exchange Online.

Herramientas de depuración

Se recomienda encarecidamente usar una herramienta que pueda interceptar y mostrar las solicitudes HTTP del servicio de web del complemento, así como las respuestas enviadas a este, mientras esté desarrollando. Algunos de los más populares son:

Causas y control de errores desde getAccessToken

Para obtener ejemplos del control de errores descrito en esta sección, consulte:

13000

La API getAccessToken no es compatible con el complemento ni con la versión de Office.

  • La versión de Office no admite SSO. La versión necesaria es la suscripción de Microsoft 365, en cualquier canal mensual.
  • En el manifiesto del complemento falta la sección WebApplicationInfo adecuada.

El complemento debe responder a este error retrocediendo a un sistema de autenticación de usuario alternativo. Para obtener más información, vea Requisitos y procedimientos recomendados.

13001

El usuario no ha iniciado sesión en Office. En la mayoría de los escenarios, debe evitar que este error se vea, para lo que puede pasar la opción allowSignInPrompt: true en el parámetro AuthOptions.

Pero puede haber excepciones. Por ejemplo, necesita que el complemento se abra con características que requieren un usuario conectado; pero solo si el usuario ya inició sesión en Office. Si el usuario no ha iniciado sesión, quiere que el complemento se abra con un conjunto alternativo de características que no requieren que el usuario haya iniciado sesión. En este caso, la lógica que se ejecuta cuando el complemento inicia llamadas getAccessToken sin allowSignInPrompt: true. Use el error 13001 como marca para indicarle al complemento que presente el conjunto alternativo de características.

Otra opción es responder a 13001 recurriendo a un sistema alternativo de autenticación de usuario. Esto dará acceso al usuario en AAD, pero no iniciará la sesión del usuario en Office.

Este error no suele producirse en Office en la Web. Si la cookie del usuario expira, Office en la Web devuelve el error 13006. Sin embargo, si un usuario accede a Outlook en la Web desde Firefox con la protección de seguimiento mejorada activada, se producirá el error 13001.

13002

El usuario abort? el inicio de sesi?n o su consentimiento; por ejemplo, eligiendo Cancelar en el cuadro de di?logo de consentimiento.

  • Si el complemento proporciona funciones que no requieren que el usuario haya iniciado sesión (o haya concedido su consentimiento), el código debe detectar este error y permitir que el complemento siga funcionando.
  • Si el complemento requiere un usuario conectado que haya otorgado el consentimiento, el código debe tener un botón de inicio de sesión.

13003

No se admite el tipo de usuario. El usuario no ha iniciado sesión en Office con una cuenta de Microsoft o Microsoft 365 Educación o una cuenta profesional válidas. Esto puede ocurrir si Office se ejecuta con una cuenta de dominio local, por ejemplo. Su código debe recurrir a un sistema alternativo de autenticación de usuario. En Outlook, este error también puede producirse si la autenticación moderna está deshabilitada para el inquilino del usuario en Exchange Online. Para obtener más información, vea Requisitos y procedimientos recomendados.

13004

El recurso no es válido. (Este error solo se debe ver en el desarrollo). El manifiesto del complemento no se ha configurado correctamente. Actualice el manifiesto. Para obtener más información, vea Validar un manifiesto del complemento de Office. El problema más común es que el <elemento Resource> (en el <elemento WebApplicationInfo> ) tiene un dominio que no coincide con el dominio del complemento. Aunque la parte del protocolo del valor Resource debe ser "api", no "https"; todas las otras partes del nombre de dominio (incluido el puerto, si corresponde) deben ser las mismas que para el complemento.

13005

Concesión no válida. Esto normalmente significa que Office no se ha autorizado previamente en el servicio web del complemento. Para obtener más información, vea Crear la aplicación de servicio y Registrar un complemento de Office que use el inicio de sesión único (SSO) con el Plataforma de identidad de Microsoft. Esto también puede ocurrir si el usuario no ha otorgado a la aplicación de servicio permisos para su profile, o bien, si ha revocado el consentimiento. Su código debe recurrir a un sistema alternativo de autenticación de usuario.

Otra posible causa, durante el desarrollo, es que su complemento use Internet Explorer y usted esté usando un certificado auto firmado. (Para determinar qué explorador o vista web está usando el complemento, vea Exploradores y controles de vista web que usan los complementos de Office).

13006

Error del cliente. Este error solo se ve en Office en la Web. Su código debe sugerirle al usuario que cierre sesión y después reinicie la sesión en el explorador de Office.

13007

La aplicación de Office no pudo obtener un token de acceso al servicio web del complemento.

13008

El usuario ha activado una operación que llama a getAccessToken antes de que se haya completado una llamada anterior de getAccessToken. Este error solo se ve en Office en la Web. El código debe pedirle al usuario que repita la operación una vez que se haya completado la operación anterior.

13010

El usuario ejecuta el complemento en Office en Microsoft Edge. El dominio de Microsoft 365 del usuario y el login.microsoftonline.com dominio se encuentran en una zona de seguridad diferente en la configuración del explorador. Este error solo se ve en Office en la Web. Si se vuelve a producir este error, el usuario ya habrá visto un error que explica esto y está vinculado a una página acerca de cómo cambiar la configuración de zona. Si el complemento proporciona funciones que no requieren que el usuario haya iniciado sesión, el código debe detectar este error y permitir que el complemento siga funcionando.

13012

Hay varias causas posibles.

  • El complemento se ejecuta en una plataforma que no admite la API getAccessToken. Por ejemplo, no se admite en iPad. Consulte también Conjuntos de requisitos de Identity API.
  • El documento de Office se abrió desde la pestaña Archivos de un canal de Teams mediante la opción Editar en Teams del menú desplegable Abrir . La getAccessToken API no se admite en este escenario.
  • La opción forMSGraphAccess se pasó en la llamada a getAccessToken y el usuario ha obtenido el complemento de AppSource. En este escenario, el administrador de inquilinos no ha otorgado el consentimiento al complemento para los ámbitos de Microsoft Graph (permisos) que se necesitan. Al recuperar getAccessToken con el allowConsentPrompt no se soluciona el problema porque se permite que Office solicite al usuario consentimiento solo para el ámbito profile de AAD.

Su código debe recurrir a un sistema alternativo de autenticación de usuario.

En el desarrollo, el complemento se transfiere en Outlook y la opción forMSGraphAccess se pasa en la llamada a getAccessToken.

13013

Se getAccessToken llamó demasiadas veces en un breve período de tiempo, por lo que Office limitó la llamada más reciente. Esto suele deberse a un bucle infinito de llamadas al método . Hay escenarios en los que es aconsejable recuperar el método. Sin embargo, el código debe usar un contador o una variable de marca para asegurarse de que el método no se recupera repetidamente. Si la misma ruta de acceso de código de "reintento" se está ejecutando de nuevo, el código debe volver a un sistema alternativo de autenticación de usuario. Para obtener un ejemplo de código, vea cómo se usa la retryGetAccessToken variable en HomeES6.js o ssoAuthES6.js.

50001

Este error (que no es específico de getAccessToken) puede indicar que el explorador ha almacenado en caché una copia antigua de los archivos office.js. Al desarrollar, borre la memoria caché del explorador. Otra posibilidad es que la versión de Office no sea lo suficientemente reciente como para admitir el inicio de sesión único. En Windows, la versión mínima es la versión 1911 (compilación 12215.20006). En Mac, es la versión 16.32 (19102902).

En un complemento de producción, el complemento debe responder a este error retrocediendo a un sistema de autenticación de usuario alternativo. Para obtener más información, vea Requisitos y procedimientos recomendados.

Errores en el lado servidor de Azure Active Directory

Para obtener ejemplos del control de errores descrito en esta sección, vea:

Errores de acceso condicional / autenticación multifactor

En determinadas configuraciones de identidad en AAD y Microsoft 365, es posible que algunos recursos a los que se puede acceder con Microsoft Graph requieran autenticación multifactor (MFA), incluso cuando el inquilino de Microsoft 365 del usuario no lo haga. Cuando AAD recibe una solicitud de un token al recurso protegido por MFA, a través del flujo "en nombre de", devuelve al servicio web del complemento un mensaje JSON que contiene una propiedad claims. La propiedad claims contiene información sobre qué otros factores de autenticación se necesitan.

El código debe probar esta claims propiedad. Según la arquitectura de su complemento, puede probarlo en el lado del cliente, o bien puede probarlo en el lado del servidor y retransmitirlo al cliente. Necesitará esta información en el cliente porque Office controla la autenticación para los complementos SSO. Si lo retransmite desde el lado del servidor, el mensaje al cliente puede mostrarse como un error (como 500 Server Error o 401 Unauthorized) o incluirse en el cuerpo de una respuesta de operación correcta (como 200 OK). En cualquier caso, la devolución de llamada (de error o de operación correcta) de la llamada AJAX del lado cliente del código a la API web del complemento debe probar esta respuesta.

Independientemente de la arquitectura, si el valor de notificaciones se ha enviado desde AAD, el código debe recuperar getAccessToken y pasar la opción authChallenge: CLAIMS-STRING-HERE en el options parámetro . Cuando AAD ve esta cadena, solicita al usuario los factores adicionales y, a continuación, devuelve un nuevo token de acceso que se aceptará en el flujo en nombre de.

Si AAD no tiene ningún registro de que el usuario (o el administrador de inquilinos) haya concedido su consentimiento (al recurso de Microsoft Graph) para el complemento, AAD enviará un mensaje de error al servicio web. El código debe indicarle esto al cliente (en el cuerpo de una respuesta 403 Forbidden, por ejemplo).

Si el complemento necesita ámbitos de Microsoft Graph que solo puedan ser otorgados por un administrador, el código debe producir un error. Si los únicos ámbitos necesarios pueden ser otorgados por el usuario, entonces el código debe recurrir a un sistema alternativo de autenticación de usuario.

Errores de ámbitos (permisos) no válidos o ausentes

Este tipo de error solo debería verse en desarrollo.

Error de audiencia no válido en el token de acceso para Microsoft Graph

El código del lado servidor debe enviar una respuesta 403 Forbidden al cliente que debe mostrarle un mensaje descriptivo al usuario y, posiblemente, también registrar el error en la consola o guardarlo en un registro.