Solución de problemas de autenticación de Bot FrameworkTroubleshooting Bot Framework authentication

se aplica a: SDK V4APPLIES TO: SDK v4

Esta guía puede ayudarle a solucionar problemas de autenticación con el bot evaluando una serie de escenarios para determinar dónde se produce el problema.This guide can help you to troubleshoot authentication issues with your bot by evaluating a series of scenarios to determine where the problem exists.

Nota

Para completar todos los pasos descritos en esta guía, debe descargar y usar Bot Framework Emulator y debe tener acceso a la configuración de registro del bot en Azure Portal.To complete all steps in this guide, you will need to download and use the Bot Framework Emulator and must have access to the bot's registration settings in the Azure Portal.

Identificador de aplicación y contraseñaApp ID and password

La seguridad del bot se configura con el identificador de aplicación de Microsoft y la contraseña de aplicación de Microsoft que se obtiene al registrar el bot con Bot Framework.Bot security is configured by the Microsoft App ID and Microsoft App Password that you obtain when you register your bot with the Bot Framework. Normalmente, estos valores son especificados en el archivo de configuración del bot y se usan para recuperar los tokens de acceso del servicio Cuenta Microsoft.These values are typically specified within the bot's configuration file and used to retrieve access tokens from the Microsoft Account service.

Si aún no lo ha hecho, implemente el bot en Azure para obtener el id. de la aplicación de Microsoft y la contraseña de la aplicación de Microsoft que pueda usar para la autenticación.If you have not yet done so, deploy your bot to azure to obtain a Microsoft App ID and Microsoft App Password that it can use for authentication.

Nota

Para encontrar los valores de AppID y AppPassword de un bot que ya se ha implementado, consulte MicrosoftAppID y MicrosoftAppPassword.To find your bot's AppID and AppPassword for an already deployed bot, see MicrosoftAppID and MicrosoftAppPassword.

Paso 1: Deshabilitar la seguridad y probar en el host localStep 1: Disable security and test on localhost

En este paso, comprobará que su bot es accesible y funcional en el host local cuando la seguridad está deshabilitada.In this step, you will verify that your bot is accessible and functional on localhost when security is disabled.

Advertencia

Deshabilitar la seguridad para el bot puede permitir que atacantes desconocidos suplanten a los usuarios.Disabling security for your bot may allow unknown attackers to impersonate users. Solo debe implementar el procedimiento siguiente si está trabajando en un entorno de depuración protegido.Only implement the following procedure if you are operating in a protected debugging environment.

Deshabilitar la seguridadDisable security

Para deshabilitar la seguridad para el bot, edite sus valores de configuración para quitar los valores del identificador de aplicación y la contraseña.To disable security for your bot, edit its configuration settings to remove the values for app ID and password.

Si utiliza el SDK de bot Framework para .NET, agregue o edite la configuración en el appsettings.jsen el archivo:If you're using the Bot Framework SDK for .NET, add or edit the settings in your appsettings.json file:

  "MicrosoftAppId": "",
  "MicrosoftAppPassword": ""

Prueba del bot en el host localTest your bot on localhost

A continuación, pruebe el bot en el host local mediante Bot Framework Emulator.Next, test your bot on localhost by using the Bot Framework Emulator.

  1. Inicie el bot en el host local.Start your bot on localhost.
  2. Inicie Bot Framework Emulator.Start the Bot Framework Emulator.
  3. Conéctese a su bot mediante el emulador.Connect to your bot using the Emulator.
    • Escriba http://localhost:port-number/api/messages en la barra de direcciones del emulador, donde el número de Puerto coincide con el número de puerto que se muestra en el explorador donde se ejecuta la aplicación.Type http://localhost:port-number/api/messages into the Emulator's address bar, where port-number matches the port number shown in the browser where your application is running.
    • Asegúrese de dejar vacíos los campos Microsoft App ID (Id. de aplicación de Microsoft) y Microsoft App Password (Contraseña de aplicación de Microsoft).Ensure that the Microsoft App ID and Microsoft App Password fields are both empty.
    • Haga clic en Conectar.Click Connect.
  4. Para probar la conectividad con el bot, escriba texto en el emulador y presione Entrar.To test connectivity to your bot, type some text into the Emulator and press Enter.

Si el bot responde a la entrada y no hay ningún error en la ventana de chat, ha comprobado que su bot es accesible y funcional en el host local cuando la seguridad está deshabilitada.If the bot responds to the input and there are no errors in the chat window, you have verified that your bot is accessible and functional on localhost when security is disabled. Siga con el Paso 2.Proceed to Step 2.

Si se indica algún error en la ventana de chat, haga clic en él para obtener más información.If one or more error(s) are indicated in the chat window, click the error(s) for details. Algunos problemas comunes son:Common issues include:

  • La configuración del emulador especifica un punto de conexión incorrecto para el bot.The Emulator settings specify an incorrect endpoint for the bot. Asegúrese de que ha incluido el número de puerto adecuado en la dirección URL y la ruta de acceso correcta al final de la dirección URL (p. ej., /api/messages).Make sure you have included the proper port number in the URL and the proper path at the end of the URL (e.g., /api/messages).
  • La configuración del emulador especifica un punto de conexión de bot que comienza con https .The Emulator settings specify a bot endpoint that begins with https. En el host local, el punto de conexión debe comenzar por http.On localhost, the endpoint should begin with http.
  • La configuración del emulador especifica un valor para el campo ID. de aplicación de Microsoft y/o el campo contraseña de aplicación de Microsoft .The Emulator settings specify a value for the Microsoft App ID field and/or the Microsoft App Password field. Ambos campos deben estar vacíos.Both fields should be empty.
  • La seguridad no se ha deshabilitado para el bot.Security has not been disabled of for the bot. Compruebe que el bot no especifica un valor para el identificador de aplicación o la contraseña.Verify that the bot does not specify a value for either app ID or password.

Paso 2: Comprobar el identificador de aplicación y la contraseña del botStep 2: Verify your bot's app ID and password

En este paso, comprobará que el identificador de aplicación y la contraseña que va a usar el bot para la autenticación son válidos.In this step, you will verify that the app ID and password that your bot will use for authentication are valid. (Si no conoce estos valores, obténgalos ahora).(If you do not know these values, obtain them now.)

Advertencia

Las siguientes instrucciones deshabilitan la comprobación de SSL para login.microsoftonline.com.The following instructions disable SSL verification for login.microsoftonline.com. Realice este procedimiento solo en una red segura y considere la posibilidad de cambiar la contraseña de su aplicación posteriormente.Only perform this procedure on a secure network and consider changing your application's password afterward.

Emisión de una solicitud HTTP para el servicio de inicio de sesión de MicrosoftIssue an HTTP request to the Microsoft login service

Estas instrucciones describen cómo usar cURL para emitir una solicitud HTTP para el servicio de inicio de sesión de Microsoft.These instructions describe how to use cURL to issue an HTTP request to the Microsoft login service. Puede usar una herramienta alternativa como Postman, solo tiene que comprobar que la solicitud se ajusta al protocolo de autenticación de Bot Framework.You may use an alternative tool such as Postman, just ensure that the request conforms to the Bot Framework authentication protocol.

Para comprobar que el identificador de aplicación y la contraseña del bot son válidos, emita la siguiente solicitud con cURL, reemplazando APP_ID y APP_PASSWORD con el identificador de aplicación y la contraseña de su bot.To verify that your bot's app ID and password are valid, issue the following request using cURL, replacing APP_ID and APP_PASSWORD with your bot's app ID and password.

Sugerencia

La contraseña puede contener caracteres especiales que hagan que la siguiente llamada no sea válida.Your password may contain special characters that make the following call invalid. Si es así, pruebe a convertir la contraseña a codificación URL.If so, try converting your password to URL encoding.

curl -k -X POST https://login.microsoftonline.com/botframework.com/oauth2/v2.0/token -d "grant_type=client_credentials&client_id=APP_ID&client_secret=APP_PASSWORD&scope=https%3A%2F%2Fapi.botframework.com%2F.default"

Esta solicitud intenta intercambiar el identificador de aplicación y la contraseña del su bot por un token de acceso.This request attempts to exchange your bot's app ID and password for an access token. Si la solicitud se realiza correctamente, recibirá una carga JSON que contendrá una propiedad access_token, entre otros elementos.If the request is successful, you will receive a JSON payload that contains an access_token property, amongst others.

{"token_type":"Bearer","expires_in":3599,"ext_expires_in":0,"access_token":"eyJ0eXAJKV1Q..."}

Si la solicitud se realiza correctamente, ha comprobado que el identificador de aplicación y la contraseña que especificó en la solicitud son válidos.If the request is successful, you have verified that the app ID and password that you specified in the request are valid. Siga con el Paso 3.Proceed to Step 3.

Si recibe un error en respuesta a la solicitud, examine la respuesta para identificar la causa.If you receive an error in response to the request, examine the response to identify the cause of the error. Si la respuesta indica que el identificador de aplicación o la contraseña no son válidos, obtenga los valores correctos desde el portal de Bot Framework y vuelva a emitir la solicitud con los nuevos valores para confirmar que son válidos.If the response indicates that the app ID or the password is invalid, obtain the correct values from the Bot Framework Portal and re-issue the request with the new values to confirm that they are valid.

Paso 3: Deshabilitar la seguridad y probar en el host localStep 3: Enable security and test on localhost

En este momento, ha comprobado que su bot es accesible y funcional en el host local cuando la seguridad está deshabilitada y ha confirmado que el identificador de aplicación y la contraseña que utilizará el bot para la autenticación son válidos.At this point, you have verified that your bot is accessible and functional on localhost when security is disabled and confirmed that the app ID and password that the bot will use for authentication are valid. En este paso, comprobará que su bot es accesible y funcional en el host local cuando la seguridad está habilitada.In this step, you will verify that your bot is accessible and functional on localhost when security is enabled.

Habilitar la seguridadEnable security

La seguridad del bot se basa en los servicios de Microsoft, incluso cuando se ejecuta en el host local.Your bot's security relies on Microsoft services, even when your bot is running only on localhost. Para habilitar la seguridad para el bot, edite sus valores de configuración para rellenar el identificador de aplicación y la contraseña con los valores que comprobó en el Paso 2.To enable security for your bot, edit its configuration settings to populate app ID and password with the values that you verified in Step 2. Además, asegúrese de que los paquetes están actualizados, específicamente System.IdentityModel.Tokens.Jwt y Microsoft.IdentityModel.Tokens.Additionally, make sure your packages are up to date, specifically System.IdentityModel.Tokens.Jwt and Microsoft.IdentityModel.Tokens.

Si usa Bot Framework SDK para. NET, rellene estos valores en el archivo appsettings.config o los valores correspondientes en el archivo appsettings.json:If you're using the Bot Framework SDK for .NET, populate these settings in your appsettings.config or the corresponding values in your appsettings.json file:

<appSettings>
  <add key="MicrosoftAppId" value="APP_ID" />
  <add key="MicrosoftAppPassword" value="PASSWORD" />
</appSettings>

Si usa Bot Framework SDK para Node.js, rellene estos valores (o actualice las variables de entorno correspondientes):If you're using the Bot Framework SDK for Node.js, populate these settings (or update the corresponding environment variables):

var connector = new builder.ChatConnector({
  appId: 'APP_ID',
  appPassword: 'PASSWORD'
});

Nota

Para buscar los valores AppID y AppPassword del bot, consulte MicrosoftAppID y MicrosoftAppPassword.To find your bot's AppID and AppPassword, see MicrosoftAppID and MicrosoftAppPassword.

Prueba del bot en el host localTest your bot on localhost

A continuación, pruebe el bot en el host local mediante Bot Framework Emulator.Next, test your bot on localhost by using the Bot Framework Emulator.

  1. Inicie el bot en el host local.Start your bot on localhost.
  2. Inicie Bot Framework Emulator.Start the Bot Framework Emulator.
  3. Conéctese a su bot mediante el emulador.Connect to your bot using the Emulator.
    • Escriba http://localhost:port-number/api/messages en la barra de direcciones del emulador, donde el número de Puerto coincide con el número de puerto que se muestra en el explorador donde se ejecuta la aplicación.Type http://localhost:port-number/api/messages into the Emulator's address bar, where port-number matches the port number shown in the browser where your application is running.
    • Escriba el identificador de la aplicación del bot en el campo Microsoft App ID (Id. de aplicación de Microsoft).Enter your bot's app ID into the Microsoft App ID field.
    • Escriba la contraseña del bot en el campo Microsoft App Password (Contraseña de aplicación de Microsoft).Enter your bot's password into the Microsoft App Password field.
    • Haga clic en Conectar.Click Connect.
  4. Para probar la conectividad con el bot, escriba texto en el emulador y presione Entrar.To test connectivity to your bot, type some text into the Emulator and press Enter.

Si el bot responde a la entrada y no hay ningún error en la ventana de chat, ha comprobado que su bot es accesible y funcional en el host local cuando la seguridad está habilitada.If the bot responds to the input and there are no errors in the chat window, you have verified that your bot is accessible and functional on localhost when security is enabled. Siga con el Paso 4.Proceed to Step 4.

Si se indica algún error en la ventana de chat, haga clic en él para obtener más información.If one or more error(s) are indicated in the chat window, click the error(s) for details. Algunos problemas comunes son:Common issues include:

  • La configuración del emulador especifica un punto de conexión incorrecto para el bot.The Emulator settings specify an incorrect endpoint for the bot. Asegúrese de que ha incluido el número de puerto adecuado en la dirección URL y la ruta de acceso correcta al final de la dirección URL (p. ej., /api/messages).Make sure you have included the proper port number in the URL and the proper path at the end of the URL (e.g., /api/messages).
  • La configuración del emulador especifica un punto de conexión de bot que comienza con https .The Emulator settings specify a bot endpoint that begins with https. En el host local, el punto de conexión debe comenzar por http.On localhost, the endpoint should begin with http.
  • En la configuración del emulador, el campo ID. de aplicación de Microsoft y/o la contraseña de aplicación de Microsoft no contienen valores válidos.In the Emulator settings, the Microsoft App ID field and/or the Microsoft App Password do not contain valid values. Se deben rellenar ambos campos y cada uno debe contener el valor correspondiente que comprobó en el Paso 2.Both fields should be populated and each field should contain the corresponding value that you verified in Step 2.
  • La seguridad no se ha habilitado para el bot.Security has not been enabled for the bot. Compruebe que la configuración del bot especifica valores para el identificador de aplicación y la contraseña.Verify that the bot configuration settings specify values for both app ID and password.

Paso 4: Probar el bot en la nube Step 4: Test your bot in the cloud

En este momento, ha comprobado que su bot es accesible y funcional en el host local cuando la seguridad está deshabilitada, ha confirmado que el identificador de aplicación y la contraseña del bot son válidos, y ha comprobado que es accesible y funcional en el host local cuando la seguridad está habilitada.At this point, you have verified that your bot is accessible and functional on localhost when security is disabled, confirmed that your bot's app ID and password are valid, and verified that your bot is accessible and functional on localhost when security is enabled. En este paso, implementará el bot en la nube y comprobará que es accesible y funcional con la seguridad habilitada.In this step, you will deploy your bot to the cloud and verify that it is accessible and functional there with security enabled.

Implementación de un bot en la nubeDeploy your bot to the cloud

Bot Framework requiere que los bots sean accesibles desde Internet, por lo que debe implementar el bot en una plataforma con hospedaje en la nube como Azure.The Bot Framework requires that bots be accessible from the internet, so you must deploy your bot to a cloud hosting platform such as Azure. Asegúrese de habilitar la seguridad para el bot antes de la implementación, como se describe en el Paso 3.Be sure to enable security for your bot prior to deployment, as described in Step 3.

Nota

Si aún no tiene un proveedor de hospedaje en la nube, puede registrarse para obtener una cuenta gratuita.If you do not already have a cloud hosting provider, you can register for a free account.

Al implementar el bot en Azure, SSL se configurará automáticamente para la aplicación, lo que permite habilitar el punto de conexión de HTTPS que Bot Framework requiere.If you deploy your bot to Azure, SSL will automatically be configured for your application, thereby enabling the HTTPS endpoint that the Bot Framework requires. Si realiza la implementación en otro proveedor de hospedaje en la nube, asegúrese de comprobar que la aplicación está configurada para SSL, a fin de que el bot disponga de un punto de conexión HTTPS.If you deploy to another cloud hosting provider, be sure to verify that your application is configured for SSL so that the bot will have an HTTPS endpoint.

Prueba del botTest your bot

Para probar el bot en la nube con la seguridad habilitada, complete los pasos siguientes.To test your bot in the cloud with security enabled, complete the following steps.

  1. Asegúrese de que el bot se ha implementado correctamente y se está ejecutando.Ensure that your bot has been successfully deployed and is running.
  2. Inicie sesión en Azure Portal.Sign in to the Azure Portal.
  3. En el portal, vaya a Bot Channels Registration (Registro de canales de bot) para su bot.Navigate to the Bot Channels Registration for your bot within the portal.
  4. Haga clic en Test in Web Chat (Probar en Web Chat), en el panel Bot management (Administración del bot) de la izquierda.Click Test in Web Chat in the Bot management pane on the left.
  5. Para probar la conectividad al bot, escriba en el control de chat web y presione Entrar.To test connectivity to your bot, type some text into the web chat control and press Enter.

Si se indica un error en la ventana de chat, utilice el mensaje de error para determinar la causa del error.If an error is indicated in the chat window, use the error message to determine the cause of the error. Algunos problemas comunes son:Common issues include:

  • La información de Messaging endpoint (Punto de conexión de mensajería) especificada en la página Settings (Configuración) para el bot en el portal de Bot Framework es incorrecta.The Messaging endpoint specified on the Settings page for your bot in the Bot Framework Portal is incorrect. Asegúrese de que ha incluido la ruta de acceso correcta al final de la dirección URL (p. ej., /api/messages).Make sure you have included the proper path at the end of the URL (e.g., /api/messages).
  • La información de Messaging endpoint (Punto de conexión de mensajería) especificada en la página Settings (Configuración) para el bot en el portal de Bot Framework no comienza con https o no es de confianza para Bot Framework.The Messaging endpoint specified on the Settings page for your bot in the Bot Framework Portal does not begin with https or is not trusted by the Bot Framework. El bot debe tener un certificado de confianza en la cadena válido.Your bot must have a valid, chain-trusted certificate.
  • Faltan valores de configuración para el bot o son incorrectos para el identificador de aplicación o la contraseña.The bot is configured with missing or incorrect values for app ID or password. Compruebe que los valores de configuración del bot son válidos para el identificador de aplicación y la contraseña.Verify that the bot configuration settings specify valid values for app ID and password.

Si el bot responde correctamente a la entrada, ha comprobado que su bot es accesible y funcional en la nube con la seguridad habilitada.If the bot responds appropriately to the input, you have verified that your bot is accessible and functional in the cloud with security enabled. En este momento, el bot está listo para conectarse a un canal como Facebook Messenger, Direct Line y otros de forma segura.At this point, your bot is ready to securely connect to a channel such as Facebook Messenger, Direct Line, and others.

Recursos adicionalesAdditional resources

Si sigue experimentando problemas después de completar los pasos anteriores, puede:If you are still experiencing issues after completing the steps above, you can:

  • Consulte el tema de procedimientos para depurar un bot y los otros artículos de depuración de esa sección.Review how-to debug a bot and the other debugging articles in that section.
  • Depurar el bot en la nube mediante Bot Framework Emulator y el software de túneles ngrok.Debug your bot in the cloud using the Bot Framework Emulator and ngrok tunnelling software. ngrok no es un producto de Microsoft.ngrok is not a Microsoft product.
  • Usar una herramienta de creación de conexiones proxy como Fiddler para inspeccionar el tráfico HTTPS a y desde su bot.Use a proxying tool like Fiddler to inspect HTTPS traffic to and from your bot. Fiddler no es un producto de Microsoft.Fiddler is not a Microsoft product.
  • Revisar la Guía de autenticación de Bot Connector para obtener información acerca de las tecnologías de autenticación que usa Bot Framework.Review the Bot Connector authentication guide to learn about the authentication technologies that the Bot Framework uses.
  • Solicitar ayuda a otros usuarios con los recursos de soporte técnico de Bot Framework.Solicit help from others by using the Bot Framework support resources.