Share via


Adición de autenticación de terceros a acciones universales de tarjetas adaptables

Las acciones universales de tarjetas adaptables usan el bot como back-end común para controlar las acciones e introducen un nuevo tipo Action.Executede acción , que funciona en todas las aplicaciones, como Teams y Outlook.

Nota:

La compatibilidad con el esquema de acciones universales de tarjetas adaptables versión v1.4 solo está disponible para las tarjetas enviadas por el bot.

Puede habilitar los siguientes escenarios con Action.Execute en la acción universal de tarjetas adaptables:

Para más información sobre las acciones universales de tarjetas adaptables, consulte Acciones universales de tarjetas adaptables.

Si desea agregar vistas específicas del usuario en instancias en las que se comparte una tarjeta adaptable con acción universal, en el contexto de un chat de grupo o un canal, es posible que sea necesario autenticar al usuario.

En el pasado, los usuarios que chateaban uno a uno con el bot tenían que esperar mientras les enviaba una tarjeta de autenticación independiente para autenticarse. Para comunicarse con el bot, el usuario tendría que cambiar del chat de grupo o del canal que perturbaría el flujo.

Flujo de autenticación en el protocolo Action.Execute

El flujo de autenticación para OAuth, dentro del protocolo, habilita la Action.Execute autenticación en el contexto del chat de grupo o la conversación de canal donde se comparte la tarjeta adaptable.

Los bots pueden responder con la solicitud de inicio de sesión en respuesta a Action.Execute para:

  • Tarjetas adaptables enviadas por bot en un chat uno a uno, chat en grupo o un canal.
  • Tarjetas adaptables enviadas por el usuario de la aplicación a través de la aplicación de extensión de mensajes (respaldada por el bot) en un chat, chat en grupo o canal.
  • Tarjetas adaptables presentes en el área de redacción o vista previa mientras el usuario está redactando el mensaje. En el área de redacción, la actualización de la tarjeta adaptable funciona y es posible que el bot quiera usar un token para proporcionar una vista específica del usuario al usuario de la aplicación antes de enviar la tarjeta al chat.

Introducción a OAuth o flujo de inicio de sesión nominal

Los pasos de autenticación nominal o OAuth para tarjetas adaptables con acciones universales son similares al bot de Teams.

Asegúrese de que ha agregado autenticación al bot de Teams. Para más información sobre cómo crear un bot habilitado para la autenticación, cómo implementarlo en Azure y asociarlo a un proveedor de identidades y cómo integrar el bot en Microsoft Teams, consulte Incorporación de autenticación al bot de Teams.

Para una experiencia de inicio de sesión nominal o de OAuth en la que el usuario se presenta con un botón o vínculo de inicio de sesión, lo siguiente es el flujo de inicio de sesión nominal o OAuth:

Captura de pantalla que muestra el flujo de autenticación de las tarjetas adaptables con acciones universales.

  1. El cliente de Teams envía una tarjeta adaptable o actionInvokeActivity una solicitud al bot.

  2. El bot usa el protocolo Token Service para comprobar si ya hay un token almacenado en caché para el usuario especificado en el activity.from.id campo. El canal se especifica en el activity.channelId campo para el bot y la conexión que está configurado.

  3. Si hay un token almacenado en caché, el bot puede usar este token. Si no hay ningún token, el bot crea un OAuthCard y lo coloca en la respuesta con los valores siguientes:

    {
      'statusCode': 401,
      'type': 'application/vnd.microsoft.activity.loginRequest',
      'value': {
         'text': 'Please sign-in',
         'connectionName': '<configured-connection-name>',
         'buttons': [
            {
               'title': 'Sign-In',
               'text': 'Sign-In',
               'type': 'signin',
               'value': '<sign-in-URL>'
            }
         ]
      }
    }   
    
    • Los remitentes deben incluir un valor que se adhiera al formato OAuthCard.
    • Los remitentes deben incluir .connectionName Los receptores pueden omitir las solicitudes de inicio de sesión con un elemento vacío o que falta connectionName.
    • Los remitentes deben incluir un button objeto que tenga una matriz de botones no vacíos.
  4. Al recibir esta respuesta, el cliente de Teams muestra un botón de inicio de sesión en el pie de página de la tarjeta donde el usuario puede iniciar sesión.

    Captura de pantalla que muestra el botón Sign-In de la tarjeta adaptable.

  5. Cuando el usuario selecciona el botón Iniciar sesión , se abre la página de inicio de sesión del proveedor de identidades en una ventana del explorador. Una vez que el usuario inicia sesión, aparece la página Servicio de token con un valor de código de autorización.

  6. El cliente de Teams crea y envía la actividad de adaptiveCard/action invocación con name. El valor incluye el state campo que contiene el código de autorización:

    {
       'type': 'invoke',
       'name': 'adaptiveCard/action'
       'value': {
          'action': {
             'id': 'abc123',
             'type': 'Action.Execute',
             'verb': 'saveCommand',
             'data': {
                'firstName': 'Jeff',
                'lastName': 'Derstadt'
             }
          },
       'state': '123456'
       },
       ...
    }
    
    

    Los remitentes deben incluir un state campo.

  7. El canal entrega esta invocación al bot, que usa el código de autenticación para recuperar el token del servicio de token. El servicio token entrega el token de acceso del usuario al bot.

    Los receptores pueden omitir la adaptiveCard/action invocación o la respuesta con un error si falta un campo o está vacío state .

    Si el valor del state campo es incorrecto, el bot devuelve un error al cliente de Teams como se indica a continuación:

      {
       'statusCode': 401,
       'type': 'application/vnd.microsoft.error.invalidAuthCode',
      }
    

    El cliente de Teams puede solicitar de nuevo al usuario el código de autorización correcto o puede volver a enviar una Action.Execute solicitud.

  8. Si el código de autorización del state campo es correcto, el bot usa el token de acceso en nombre del usuario para realizar sus acciones.

  9. El bot responde con una tarjeta o un mensaje al cliente de Teams sin ningún error.

Vea también