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.Execute
de 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:
El cliente de Teams envía una tarjeta adaptable o
actionInvokeActivity
una solicitud al bot.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 elactivity.channelId
campo para el bot y la conexión que está configurado.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
Es posible que los receptores ignoren las solicitudes de inicio de sesión con un elemento vacío o que falteconnectionName
. - Los remitentes deben incluir un
button
objeto que tenga una matriz de botones no vacíos.
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.
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.
El cliente de Teams crea y envía la actividad de
adaptiveCard/action
invocación conname
. El valor incluye elstate
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.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íostate
.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.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.El bot responde con una tarjeta o un mensaje al cliente de Teams sin ningún error.