Autenticación de usuarios

SE APLICA A: SDK v4

A veces, un bot debe acceder en nombre del usuario a recursos en línea protegidos, como comprobar el correo electrónico, comprobar el estado de un vuelo o realizar un pedido. El usuario debe autorizar al bot para hacerlo en su nombre y, para ello, debe autenticar su identidad. Se utiliza OAuth para autenticar al usuario y autorizar al bot. Consulte también Tipos de autenticación.

Si desea actualizar sus conocimientos sobre OAuth, consulte los siguientes documentos:

Autenticación del usuario en una conversación

Para realizar determinadas operaciones en nombre de un usuario, como comprobar el correo electrónico, hacer referencia a un calendario, comprobar el estado de un vuelo o realizar un pedido, el bot deberá llamar a un servicio externo, como Microsoft Graph, GitHub o un servicio REST de la empresa. Cada servicio externo tiene una forma de proteger esas llamadas. Una forma habitual de emitir esas solicitudes es usar un token de usuario que identifique de forma única al usuario en ese servicio externo (a veces llamado JSON Web Token o JWT).

Para proteger la llamada a un servicio externo, el bot debe pedir al usuario que inicie sesión para poder adquirir el token del usuario para ese servicio. Muchos servicios admiten la recuperación del token mediante el protocolo OAuth o OAuth2.

Servicio de Bot de Azure AI ofrece tarjetas y servicios especializados de inicio de sesión que funcionan con el protocolo OAuth y administran el ciclo de vida del token. Un bot puede usar estas características para adquirir un token de usuario.

  • Como parte de la configuración del bot, se registra una conexión de OAuth en el recurso de Servicio de Bot de Azure AI en Azure.

    La conexión contiene información sobre el proveedor de identidades que se va a utilizar, junto con un identificador de cliente y un secreto de OAuth válidos, los ámbitos de OAuth que se van a habilitar y cualquier otros metadatos de conexión que requiera ese proveedor de identidades.

  • En el código del bot, se usa una conexión de OAuth para ayudar al usuario a que inicie sesión y obtenga el token de usuario.

En la imagen siguiente se muestran los elementos implicados en el proceso de autenticación.

Diagram illustrating the relationship between authentication components in Azure AI Bot Service.

Acerca del servicio de token de Bot Framework

El servicio de token de Framework Bot es responsable de:

  • Facilitar el uso del protocolo OAuth con una amplia variedad de servicios externos.
  • Almacenar de forma segura los tokens para un bot, canal, conversación y usuario determinados.
  • Adquirir tokens de usuario.

    Sugerencia

    Si el bot tiene un token de usuario caducado, el bot debe:

    • Cierre de la sesión del usuario
    • Reiniciar el flujo de inicio de sesión.

Por ejemplo, un bot que puede comprobar los correos electrónicos recientes de un usuario mediante Microsoft Graph API, necesitará un token de usuario de un proveedor de identidades, en este caso, Microsoft Entra ID. En tiempo de diseño, el desarrollador del bot realiza estos dos pasos importantes:

  1. Registra una aplicación de Microsoft Entra ID, un proveedor de identidades, con el servicio de token de Bot Framework, mediante Azure Portal.
  2. Configura una conexión de OAuth (por ejemplo, llamada GraphConnection) para el bot.

En la imagen siguiente se muestra la secuencia de tiempo de la interacción del usuario con un bot cuando se realiza una solicitud de correo electrónico mediante el servicio Microsoft Graph.

Sequence diagram outlining the steps for a bot to send an email on behalf of a user.

  1. El usuario realiza una solicitud de correo electrónico al bot.

  2. Una actividad con este mensaje se envía desde el usuario al servicio de canal de Bot Framework. El servicio de canal garantiza que se ha configurado el campo userid de la actividad y que el mensaje se envía al bot.

    Nota:

    Los identificadores de usuario son específicos del canal como, por ejemplo, el identificador de Facebook del usuario o su número de teléfono para SMS.

  3. El bot realiza una solicitud al servicio de token de Bot Framework en la que pregunta si ya tiene un token para el identificador de usuario de la conexión de OAuth GraphConnection.

  4. Puesto que es la primera vez que este usuario ha interactuado con el bot, el servicio de token de Bot Framework no tiene todavía ningún token para este usuario y devuelve un resultado NotFound al bot.

    Nota:

    Si se encuentra el token, se omiten los pasos de autenticación y el bot puede realizar la solicitud de correo electrónico con el token almacenado.

  5. El bot crea una tarjeta OAuthCard con el nombre de conexión GraphConnection y responde al usuario pidiéndole que inicie sesión con esta tarjeta.

  6. La actividad pasa a través del servicio de canal de Bot Framework, que llama al servicio de token de Bot Framework para crear una dirección URL de inicio de sesión de OAuth válida para esta solicitud. Esta dirección URL de inicio de sesión se agrega a OAuthCard y la tarjeta se devuelve al usuario.

  7. Al usuario se le presenta un mensaje para que inicie sesión haciendo clic en el botón Iniciar sesión de OAuthCard.

  8. Cuando el usuario hace clic en el botón de inicio de sesión, el servicio de canal abre un explorador web y llama al servicio externo para que cargue su página de inicio de sesión.

  9. El usuario inicia sesión en esta página para el servicio externo. A continuación, el servicio externo completa el intercambio del protocolo OAuth con el servicio de token de Bot Framework, lo que hace que el servicio externo envíe al servicio de token de Bot Framework el token del usuario. El servicio de token de Bot Framework almacena de forma segura este token y envía una actividad al bot con él.

  10. El bot recibe la actividad con el token y puede usarlo para realizar llamadas a MS Graph API.

Protección de la dirección URL de inicio de sesión

Una consideración importante a tener en cuenta cuando Bot Framework facilita el inicio de sesión de un usuario es la protección de la dirección URL de inicio de sesión. Cuando se presenta a un usuario una dirección URL de inicio de sesión, esta se asocia a un identificador de conversación y de usuario específicos para ese bot. No comparta esta dirección URL, ya que, de hacerlo, podría provocar un inicio de sesión incorrecto para una determinada conversación del bot. Para mitigar los ataques de seguridad que utilizan una dirección URL de inicio de sesión compartida, asegúrese de que la máquina y la persona que hace clic en la dirección URL de inicio de sesión es la persona que posee la ventana de la conversación.

Algunos canales como Microsoft Teams, Direct Line y WebChat pueden hacer esto sin que el usuario se dé cuenta. Por ejemplo, WebChat utiliza cookies de sesión para asegurarse de que el flujo de inicio de sesión tuvo lugar en el mismo explorador que la conversación de WebChat. Sin embargo, en el caso de otros canales, al usuario se le presenta a menudo un código mágico de 6 dígitos. Esto se parece a la autenticación multifactor integrada ya que el servicio de token de Bot Framework no publicará el token para el bot a menos que el usuario termine la autenticación final y demuestre que la persona que ha iniciado sesión tiene acceso a la experiencia de chat escribiendo el código de 6 dígitos.

Importante

Tenga en cuenta estas consideraciones de seguridad importantes. Puede encontrar información adicional en esta entrada de blog: Uso de WebChat con autenticación de Servicio de Bot de Azure AI.

Pasos siguientes

Ahora que sabe lo que es la autenticación de usuarios, veamos cómo aplicarla al bot.

Consulte también