Flujo de autenticación para bots en Microsoft Teams

OAuth 2.0 es un estándar abierto para la autenticación y autorización usado por Azure Active Directory (Azure AD) y otros muchos proveedores de identidad. Un conocimiento básico de OAuth 2.0 es un requisito previo para trabajar con la autenticación en Teams; esta es una buena introducción que es más fácil de seguir que la especificación formal. El flujo de autenticación para pestañas y bots es un poco diferente: las pestañas son muy similares a los sitios web para que puedan usar OAuth 2.0 directamente, mientras que los bots no son y deben hacer algunas cosas de forma diferente, pero los conceptos básicos son idénticos.

Consulte el ejemplo Microsoft Teams de autenticación de repositorio de GitHub para ver un ejemplo que muestra el flujo de autenticación para bots que usan Node.js y el tipo de concesión de código de autorización de OAuth 2.0.

Diagrama de secuencia de autenticación de bot

  1. El usuario envía un mensaje al bot.

  2. El bot determina si el usuario debe iniciar sesión. En este ejemplo, el bot almacena el token de acceso en su almacén de datos de usuario. Se pide al usuario que inicie sesión si no tiene un token validado para el proveedor de identidades seleccionado. (Ver código)

  3. El bot construye la dirección URL en la página de inicio del flujo de autenticación y envía una tarjeta al usuario con una signin acción. (Ver código)
    Al igual que otros flujos de autenticación de aplicación en Teams, la página de inicio debe estar en un dominio que esté en la lista y en el mismo dominio que la página de redireccionamiento posterior validDomains al inicio de sesión.

    Importante

    El flujo de concesión de código de autorización de OAuth 2.0 llama a un parámetro de la solicitud de autenticación, que contiene un token de sesión único para evitar un ataque de falsificación de solicitudes entre state sitios. En el ejemplo se usa un GUID generado aleatoriamente.

  4. Cuando el usuario selecciona el botón de inicio de sesión, Teams abre una ventana emergente y navega a la página de inicio.

    Nota

    El tamaño de la ventana emergente se puede controlar mediante parámetros de cadena de consulta de ancho y alto en la dirección URL. Por ejemplo, si agrega width=600 y height=600, el tamaño de la ventana emergente es de 600 x 600 píxeles. El tamaño real de la ventana emergente se recueste como un porcentaje del Teams de la ventana principal. Si la Teams es pequeña, la ventana emergente es menor que las dimensiones especificadas.

  5. La página de inicio redirige al usuario al extremo del proveedor de authorize identidades. (Ver código)

  6. En el sitio del proveedor, el usuario inicia sesión y concede acceso al bot.

  7. El proveedor lleva al usuario a la página de redireccionamiento de OAuth del bot con un código de autorización.

  8. El bot canjea el código de autorización de un token de acceso y asocia provisionalmente el token con el usuario que inició el flujo de inicio de sesión. A continuación, le llamamos un token provisional.

    • En el ejemplo, el bot asocia el valor del parámetro con el identificador del usuario que inició el proceso de inicio de sesión para que posteriormente pueda coincidir con el valor devuelto por el proveedor de state state identidades. (Ver código)

      Importante

      El bot almacena el token que recibe del proveedor de identidades y lo asocia con un usuario específico, pero se marca como "validación pendiente".

    • El token provisional no se puede usar sin una validación adicional.
      1. Valide lo que se recibe del proveedor de identidades. El valor del state parámetro debe confirmarse con respecto a lo que se guardó anteriormente.
      2. Valide lo que se recibe de Teams. Se realiza una validación de autenticación en dos pasos para garantizar que el usuario que autorizó el bot con el proveedor de identidades sea el mismo usuario que está chateando con el bot. Esto protege contra ataques de suplantación de identidad (phishing) y de man-in-the-middle. El bot genera un código de verificación y lo almacena, asociado con el usuario. El código de verificación se envía automáticamente Teams como se describe a continuación. (Ver código)
  9. La devolución de llamada de OAuth representa una página que llama a notifySuccess("<verification code>") . (Ver código)

  10. Teams cierra la ventana emergente y envía el envío al <verification code> notifySuccess() bot. El bot recibe un mensaje de invocación con name = signin/verifyState .

  11. El bot comprueba el código de comprobación entrante con el código de verificación almacenado con el token provisional del usuario. (Ver código)

  12. Si coinciden, el bot marca el token como validado y listo para su uso. De lo contrario, se produce un error en el flujo de autenticación y el bot elimina el token provisional.

    Nota

    Si tiene problemas con la autenticación en dispositivos móviles, asegúrese de que el SDK de JavaScript se actualice a la versión 1.4.1 o posterior.

Ejemplo de código

Código de ejemplo que muestra el proceso de autenticación del bot:

Ejemplo de nombre Descripción Node.js .NET Python
Teams autenticación En este ejemplo se muestra la autenticación en Microsoft Teams aplicaciones. View
Autenticación de bot En este ejemplo se muestra cómo usar la autenticación para un bot que se ejecuta en Microsoft Teams View View Ver

Consulte también

Agregar autenticación al bot Teams usuario