Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a: SDK v4
En ocasiones, un bot debe acceder a los recursos en línea protegidos en nombre del usuario, como comprobar el correo electrónico, comprobar el estado del vuelo o realizar un pedido. El usuario debe autorizar al bot para que lo haga en su nombre y, para autorizarlo, el usuario debe autenticar su identidad. OAuth se usa para autenticar al usuario y autorizar al bot. Consulte también Tipos de autenticación.
Si desea actualizar el conocimiento de OAuth, consulte lo siguiente:
- Buena información general de OAuth más fácil de seguir que la especificación formal
- Especificación de OAuth
Autenticación de 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 del vuelo o realizar un pedido, el bot deberá llamar a un servicio externo, como Microsoft Graph, GitHub o el servicio REST de una empresa. Cada servicio externo tiene una manera de proteger esas llamadas. Una manera común de emitir esas solicitudes es usar un token de usuario que identifica de forma única al usuario en ese servicio externo (a veces denominado JSON Web Token (JWT)).
Para proteger la llamada a un servicio externo, el bot debe pedir al usuario que inicie sesión, por lo que puede adquirir el token del usuario para ese servicio. Muchos servicios admiten la recuperación de tokens a través del protocolo OAuth o OAuth2 .
Azure AI Bot Service proporciona tarjetas de inicio de sesión y servicios especializados 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 Azure AI Bot Service en Azure.
La conexión contiene información sobre el proveedor de identidades que se va a usar, junto con un identificador de cliente y un secreto de OAuth válidos, los ámbitos de OAuth para habilitar y cualquier otro metadato de conexión requerido por ese proveedor de identidades.
En el código del bot, la conexión de OAuth se usa para ayudar a iniciar sesión al usuario y obtener el token de usuario.
En la imagen siguiente se muestran los elementos implicados en el proceso de autenticación.
Acerca del servicio de token de Bot Framework
Bot Framework Token Service es responsable de:
- Facilitar el uso del protocolo OAuth con una amplia variedad de servicios externos.
- Almacenamiento seguro de tokens para un bot, canal, conversación y usuario concretos.
- Adquisición de tokens de usuario.
Sugerencia
Si el bot tiene un token de usuario expirado, el bot debe:
- Cierre de la sesión del usuario
- Inicie nuevamente el proceso de inicio de sesión.
Por ejemplo, un bot que puede comprobar los correos electrónicos recientes de un usuario, mediante Microsoft Graph API, requiere 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:
- Registra una aplicación de Microsoft Entra ID, un proveedor de identidades, con el servicio de tokens de Bot Framework, a través del portal de Azure.
- Configura una conexión de OAuth (denominada por ejemplo
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.
El usuario realiza una solicitud de correo electrónico al bot.
Desde el usuario se envía una actividad con este mensaje al servicio de canal de Bot Framework. El servicio de canal garantiza que el campo
useriddentro de la actividad se ha establecido y que el mensaje se envía al bot.Nota:
Los identificadores de usuario son específicos del canal, como el identificador de Facebook del usuario o su número de teléfono SMS.
El bot realiza una solicitud al servicio de token de Bot Framework en el que se pregunta si ya tiene un token para userId para la conexión
GraphConnectionde OAuth.Dado que esta es la primera vez que este usuario ha interactuado con el bot, Bot Framework Token Service aún no tiene un 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 mediante el token almacenado.
El bot crea un OAuthCard con un nombre de conexión de
GraphConnectiony responde al usuario que pide que inicie sesión con esta tarjeta.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.
Al usuario se le presenta un mensaje para iniciar sesión haciendo clic en el botón de inicio de sesión de OAuthCard.
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 cargar su página de inicio de sesión.
El usuario inicia sesión en esta página para el servicio externo. Después, el servicio externo completa el intercambio del protocolo OAuth con el servicio de tokens de Bot Framework, lo que resulta en que el servicio externo envíe al servicio de tokens de Bot Framework el token de usuario. Bot Framework Token Service almacena este token de forma segura y envía una actividad al bot con este token.
El bot recibe la actividad con el token y puede usarlo para realizar llamadas a la API de Microsoft Graph.
Protección de la dirección URL de inicio de sesión
Una consideración importante cuando Bot Framework facilita el inicio de sesión de un usuario es cómo proteger la dirección URL de inicio de sesión. Cuando se presenta un usuario con una dirección URL de inicio de sesión, esta dirección URL está asociada a un identificador de conversación y un identificador de usuario específicos para ese bot. No comparta esta dirección URL: provocaría que se produzca un inicio de sesión incorrecto para una conversación de bot determinada. Para mitigar los ataques de seguridad que usan 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 propietaria de la ventana de conversación.
Algunos canales como Microsoft Teams, Direct Line y WebChat pueden hacerlo sin que el usuario se note. Por ejemplo, WebChat usa 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, para otros canales, el usuario suele presentar un código mágico de 6 dígitos. Esto es similar a una autenticación multifactor integrada, ya que Bot Framework Token Service no liberará el token al bot a menos que el usuario finalice la autenticación final, lo que demuestra que la persona que inició 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 Azure AI Bot Service.
Pasos siguientes
Ahora que sabe sobre la autenticación de usuario, echemos un vistazo a cómo aplicarla al bot.