Tipos de autenticaciónAuthentication types

se aplica a: SDK V4APPLIES TO: SDK v4

En el marco de bot, existen dos categorías de autenticación generales: autenticación de bot y autenticación de usuario.In the Bot Framework, two broad authentication categories exist: bot authentication and user authentication. Cada tiene un token asociado para permitir el acceso a los recursos protegidos.Each has an associated token to allow access to secured resources. En la siguiente ilustración se muestran los elementos implicados tanto en el bot como en la autenticación de usuario.The following figure shows the elements involved in both bot and user authentication.

contexto de autenticación de bot Framework

En esta ilustración:In this figure:

  • La plataforma de host es la plataforma de hospedaje de bot.Host Platform is the bot hosting platform. Puede ser Azure o cualquier plataforma de host que elija.It can be Azure or any host platform you chose.
  • El servicio del conector de bot facilita la comunicación entre un bot y un canal.Bot Connector Service facilitates communication between a bot and a channel. Convierte los mensajes recibidos de los canales en objetos de actividad y los envía al punto de conexión de mensajería del bot.It converts messages received from channels into activity objects, and send them to the bot's messaging endpoint. Del mismo modo, convierte los objetos de actividad recibidos del bot en mensajes comprensibles por el canal y los envía al canal.Likewise, it converts activity objects received from the bot into messages understood by the channel and sends them to the channel.
  • Adaptador de bot.Bot Adapter. Este es el adaptador predeterminado de bot Framework.This is the default Bot Framework adapter. Realiza estas tareas:It performs these tasks:
    • Convierte la carga de JSON en un objeto.Converts the JSON payload into an object. En este punto, ya es un objeto de actividad, gracias al servicio de conector de bot.At this point, it is already an activity object, thanks to the Bot Connector Service.
    • Crea un contexto de activación y le agrega el objeto de actividad.Creates a turn context and adds the activity object to it.
    • Ejecuta middleware, si existe.Runs middleware, if any.
    • Reenvía el contexto de activación al bot.Forwards the turn context to the bot.

Nota

Cuando se usa un adaptador de canal personalizado, el propio adaptador realiza las tareas que el servicio del conector de Bot y el adaptador de bot predeterminados hacen.When a custom channel adapter is used, the adapter itself performs the tasks that the Bot Connector Service and the default Bot Adapter do. Además, proporciona el mecanismo de autenticación para la API de enlace web relacionada.Also, it provides the authentication mechanism for the related web hook API. Para obtener un ejemplo, consulte conexión de un bot con el margen de demora mediante el adaptador de demora.For an example, see Connect a bot to Slack using the Slack adapter.

Autenticación del botBot authentication

Un bot se identifica mediante su MicrosoftAppID y MicrosoftAppPassword, que se mantienen en los archivos de configuración ( appsettings.json (.net), .env (JavaScript), config.py (Python) de bot o en Azure Key Vault.A bot is identified by its MicrosoftAppID and MicrosoftAppPassword, which are kept within the bot's settings files (appsettings.json (.NET), .env (JavaScript), config.py (Python)) or in Azure Key Vault. Para obtener más información, vea MicrosoftAppID y MicrosoftAppPassword.For more information, see MicrosoftAppID and MicrosoftAppPassword.

Al registrar un bot en el Azure Portal, por ejemplo, mediante el registro de canales de bot, Azure crea una aplicación de registro de Active Directory (ad).When you register a bot in the Azure portal, for example via the Bot Channels Registration, Azure creates an Active Directory (AD) registration application. Si usa la CLI de bot Framework, debe realizar un paso específico para crear el registro de AD.If you use the Bot Framework CLI, you must specifically perform a step to create the AD registration. Este registro tiene un identificador de aplicación ( MicrosoftAppID ) y un secreto de cliente ( MicrosoftAppPassword ).This registration has an application ID (MicrosoftAppID) and client secret (MicrosoftAppPassword). Azure usa estos valores para generar un token con el que el Bot pueda acceder a recursos seguros.Azure uses these values to generate a token with which the bot can access secure resources.

Cuando un canal envía una solicitud a un bot, a través del servicio de conector de bot, especifica un token en el encabezado de autorización de la solicitud.When a channel sends a request to a bot, via the Bot Connector service, it specifies a token in the Authorization header of the request. El bot autentica las llamadas del servicio de conector de bot comprobando la autenticidad del token.The bot authenticates calls from the Bot Connector service by verifying the authenticity of the token.

Cuando el bot envía una solicitud a un canal a través del servicio de conector de bot, debe especificar el token en el encabezado de autorización de la solicitud.When the bot sends a request to a channel via the Bot Connector service, it must specify the token in the Authorization header of the request. Todas las solicitudes deben incluir el token de acceso que comprueba el servicio del conector de bot para autorizar la solicitud.All requests must include the access token which is verified by the Bot Connector service to authorize the request.

El SDK de bot Framework realiza automáticamente las operaciones descritas.The operations described are automatically performed by the Bot Framework SDK.

Para obtener más información, consulte la documentación de la API de REST sobre cómo autenticar las solicitudes del servicio de conector de bot en el bot y autenticar las solicitudes de su bot en el servicio del conector de bot.For more details, see the REST API documentation on how to authenticate requests from the Bot Connector service to your bot and authenticate requests from your bot to the Bot Connector service.

CanalesChannels

Normalmente, los canales se comunican con un bot a través del servicio de conector de bot.Typically, channels communicate with a bot via the Bot Connector service. Esto significa que generalmente se aplican los principios de autenticación anteriores.This means that the previous authentication principles generally apply. Puede que desee ver características de canales específicos.You may want to notice characteristics of specific channels.

Direct LineDirect Line

Además de los canales estándar admitidos, una aplicación cliente puede comunicarse con un bot mediante el canal de línea directa.Besides the standard supported channels, a client application can communicate with a bot using the Direct Line channel.

La aplicación cliente autentica las solicitudes a la línea directa (versión 3,0) mediante el uso de un secreto obtenido en la página de configuración de canal de línea directa en el Azure portal o, mejor, mediante el uso de un token obtenido en tiempo de ejecución.The client application authenticates requests to Direct Line (version 3.0) either by using a secret obtained from the Direct Line channel configuration page in the Azure portal or, better, by using a token obtained at runtime. El secreto o el token se especifican en el encabezado de autorización de cada solicitud.The secret or token are specified in the Authorization header of each request.

Importante

Cuando se usa la autenticación de Azure Bot Service con Chat en web hay algunos aspectos de seguridad importantes que debe tener en cuenta.When you use Azure Bot Service authentication with Web Chat there are some important security considerations you must keep in mind. Para más información, consulte la sección Consideraciones de seguridad del artículo de autenticación REST.For more information, see the security considerations section in the REST authentication article.

Para obtener más información, vea mantener el secreto oculto, intercambiar el secreto para un token y generar la inserción.For more information, see Keep your secret hidden, exchange your secret for a token, and generate the embed.

Chat en webWeb Chat

El chat Web tiene dos implementaciones: el canal y el control.The Web Chat has two implementations: the channel and the control.

  • Al registrar un bot con Azure, el canal de chat Web se configura automáticamente para permitir la prueba del bot.When you register a bot with Azure, the Web Chat channel is automatically configured to allow testing of the bot.

    pruebas de chat Web de bot..

    Para obtener más información, vea conectar un bot con el chat web.For more information, see Connect a bot to Web Chat.

  • Puede usar un control de chat web con el canal de línea directa para proporcionar acceso a un bot en una aplicación cliente.You can use a Web Chat control with the Direct Line channel to provide access to a bot in a client application. Para obtener más información sobre el control, vea el chat Web de bot Framework.For more information about the control, see Bot Framework Web Chat.

AptitudesSkills

Una habilidad y un consumidor de aptitudes son dos bots distintos, cada uno con su propio identificador de aplicación y contraseña.A skill and a skill consumer are two distinct bots, each with their own app ID and password.

  • El consumidor puede reenviar las actividades de usuario a una habilidad y reenviar las respuestas de las aptitudes al usuario.The consumer can forward user activities to a skill and forward the skill's responses to the user.
  • En cuanto a la habilidad, el consumidor de aptitudes actúa como un canal.To the skill, the skill consumer acts as a channel. El consumidor tiene un punto de conexión de host de aptitudes que actúa como la dirección URL de servicio a la que la aptitud envía las actividades.The consumer has a skill host endpoint that acts as the service URL that the skill sends activities to.
  • Para obtener más información sobre las aptitudes, vea información general sobre habilidades.For more information about skills, see the skills overview.

El servicio Bot Connector administra la autenticación en el nivel de servicio.Service-level authentication is managed by the Bot Connector service. Este servicio usa tokens de portador e identificadores de aplicación de bot para comprobar la identidad de cada bot.The framework uses bearer tokens and bot application IDs to verify the identity of each bot.

Importante

Esto requiere que todos los bots (el consumidor de Aptitudes y los conocimientos que consume) tengan credenciales de aplicación válidas.This requires all bots (the skill consumer and any skills it consumes) to have valid application credentials.

Validación de notificacionesClaims validation

Además de este nivel básico de autenticación, debe agregar un validador de notificaciones a la configuración de autenticación de la habilidad y al consumidor de aptitudes.In addition to this basic level of authentication, you must add a claims validator to the authentication configuration of the skill and the skill consumer. Las notificaciones se evalúan después del encabezado de autenticación.The claims are evaluated after the authentication header. Esto permite que cada bot restrinja en qué otros bots aceptará actividades.This allows each bot to restrict which other bots it will accept activities from.

Para obtener la validación de notificaciones de ejemplo, consulte Cómo implementar una habilidad e implementar un consumidor de aptitudes.For sample claims validation, see how to implement a skill and implement a skill consumer.

Bot Framework EmulatorBot Framework Emulator

El emulador de bot Framework tiene su propio flujo de autenticación y sus propios tokens.The Bot Framework Emulator has its own authentication flow and its own tokens. El emulador tiene su propio canal y un servidor integrado.The Emulator has its own channel and a built-in server.

Autenticación de usuariosUser authentication

En ocasiones, un bot debe tener acceso a recursos en línea protegidos en nombre del usuario.At times a bot must access secured online resources on behalf of the user. Para ello, el bot debe estar autorizado.To do that the bot must be authorized. Esto se debe a que para realizar ciertas operaciones, como la comprobación del correo electrónico, la comprobación del estado de un vuelo o la realización de un pedido, el bot necesita llamar a un servicio externo, como Microsoft Graph, GitHub o el servicio REST de una compañía.This is because to perform certain operations such as checking email, checking on flight status, or placing an order, the bot needs to call an external service such as Microsoft Graph, GitHub, or a company's REST service. OAuth se usa para autenticar al usuario y autorizar el bot.OAuth is used to authenticate the user and authorize the bot.

Nota

Para que un bot tenga acceso a los recursos de un usuario, es necesario realizar dos pasos de macro.Two macro-steps are involved for a bot to access a user's resources.

  1. Autenticación.Authentication. El proceso de comprobar la identidad del usuario.The process of verifying the user's identity.
  2. Autorización.Authorization. El proceso de comprobar que el bot puede tener acceso a los recursos del usuario.The process of verifying that the bot can access the user's resources.

Si el primer paso se realiza correctamente, se emite un token basado en las credenciales del usuario.If the first step is successful then a token based on the user's credentials is issued. En el segundo paso, el bot usa el token para tener acceso a los recursos del usuario.In the second step, the bot uses the token to access the user's resources.

Para obtener más información, vea autenticación de usuario.For more information, see User authentication.

Proveedores de identidadesIdentity providers

Un proveedor de identidades autentica identidades de clientes o usuarios y emite tokens de seguridad que se pueden consumir.An identity provider authenticates user or client identities and issues consumable security tokens. Proporciona la autenticación de usuario como servicio.It provides user authentication as a service. Las aplicaciones cliente, como las aplicaciones web, delegan la autenticación en un proveedor de identidades de confianza.Client applications, such as web applications, delegate authentication to a trusted identity provider.

Un bot puede usar un proveedor de identidades de confianza para:A bot can use a trusted identity provider to:

  • Habilite las características de inicio de sesión único (SSO), permitiéndole tener acceso a varios recursos protegidos.Enable single sign-on (SSO) features, allowing it to access multiple secured resources.
  • Conectarse a recursos informáticos en la nube en nombre de un usuario, lo que reduce la necesidad de volver a autenticar a los usuarios.Connect to cloud computing resources on behalf of a user, decreasing the need for users to re-authenticate.

Nota

El token emitido durante la autenticación de bot no es el mismo token emitido durante la autenticación del usuario.The token issued during Bot authentication is not the same token issued during User authentication. La primera se usa para establecer una comunicación segura entre un bot, canales y, en última instancia, aplicaciones cliente.The first is used to establish secure communication between a bot, channels and, ultimately, client applications. La segunda se usa para autorizar al bot para tener acceso a recursos protegidos en nombre del usuario.The second is used to authorize the bot to access secured resource on behalf of the user.

Tenga en cuenta que los canales proporcionan su propia autenticación de usuario independiente para permitir que un usuario inicie sesión en el canal.Notice that channels provide their own, separate user authentication to let a user sign in to the channel.

Consulte proveedores de identidades para obtener más información sobre cómo los bots pueden usar los proveedores de identidades para tener acceso a los recursos en nombre de un usuario.See Identity providers for more about how bots can use identity providers to access resources on behalf of a user.