Устранение неполадок проверки подлинности Bot FrameworkTroubleshooting Bot Framework authentication

применимо к: Пакет SDK v4APPLIES TO: SDK v4

Это руководство поможет при устранении неполадок проверки подлинности с помощью бота, оценивая ряд сценариев, чтобы определить, где существует проблема.This guide can help you to troubleshoot authentication issues with your bot by evaluating a series of scenarios to determine where the problem exists.

Примечание

чтобы выполнить все действия, описанные в этом руководстве, необходимо скачать и использовать Bot Framework Emulator и иметь доступ к параметрам регистрации Bot в портал Azure.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.

Идентификатор приложения и парольApp ID and password

Безопасность бота настраивается с помощью идентификатора приложения Microsoft и пароля приложения Microsoft, которые вы получаете при регистрации бота с помощью 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. Эти значения обычно указаны в файле конфигурации бота и используются для получения маркеров доступа из службы учетной записи Microsoft.These values are typically specified within the bot's configuration file and used to retrieve access tokens from the Microsoft Account service.

Если вы еще не сделали этого, разверните программу Bot в Azure , чтобы получить идентификатор приложения Майкрософт и пароль приложения Майкрософт , которые можно использовать для проверки подлинности.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.

Примечание

Сведения о том, как найти значения AppID и AppPassword для развернутого бота, см. в разделе MicrosoftAppID и MicrosoftAppPassword.To find your bot's AppID and AppPassword for an already deployed bot, see MicrosoftAppID and MicrosoftAppPassword.

Шаг 1. Отключение системы безопасности и тестирование на локальном компьютереStep 1: Disable security and test on localhost

На этом шаге бот доступен и функционирует на локальном компьютере, когда отключена система безопасности.In this step, you will verify that your bot is accessible and functional on localhost when security is disabled.

Предупреждение

Отключение системы защиты бота может позволить неизвестным злоумышленникам выдавать себя за пользователей.Disabling security for your bot may allow unknown attackers to impersonate users. Если вы работаете в защищенной среде отладки, используйте только следующую процедуру.Only implement the following procedure if you are operating in a protected debugging environment.

Отключение системы безопасностиDisable security

Чтобы отключить систему защиты бота, измените его параметры конфигурации и удалите значения идентификатора и пароля приложения.To disable security for your bot, edit its configuration settings to remove the values for app ID and password.

Если вы используете пакет SDK для Bot Framework для .NET, добавьте или измените параметры appsettings.js в файле:If you're using the Bot Framework SDK for .NET, add or edit the settings in your appsettings.json file:

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

Тестирование бота на локальном компьютереTest your bot on localhost

Протестируйте бот на локальном компьютере с помощью Bot Framework Emulator.Next, test your bot on localhost by using the Bot Framework Emulator.

  1. Запустите бот на локальном компьютере.Start your bot on localhost.
  2. Установите Bot Framework Emulator.Start the Bot Framework Emulator.
  3. Подключение в bot с помощью Emulator.Connect to your bot using the Emulator.
    • введите http://localhost:port-number/api/messages в адресную строку Emulator, где номер порта соответствует номеру порта, указанному в браузере, где выполняется приложение.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.
    • Убедитесь, что поля идентификатора приложения Microsoft и пароля приложения Microsoft пусты.Ensure that the Microsoft App ID and Microsoft App Password fields are both empty.
    • Нажмите кнопку Соединить.Click Connect.
  4. чтобы проверить возможность подключения к bot, введите текст в Emulator и нажмите клавишу ввод.To test connectivity to your bot, type some text into the Emulator and press Enter.

Если бот реагирует на входные данные и в окне чата нет ошибок, значит бот доступен и функционирует на локальном узле при выключенной системе безопасности.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. Перейдите к Шагу 2.Proceed to Step 2.

Если в окне чата указаны одна или несколько ошибок, щелкните по ошибке, чтобы узнать подробности.If one or more error(s) are indicated in the chat window, click the error(s) for details. Часто возникающие проблемы.Common issues include:

  • параметры Emulator указывают неправильную конечную точку для робота.The Emulator settings specify an incorrect endpoint for the bot. Убедитесь, что указан правильный номер порта в URL-адресе и правильный путь в конце URL-адреса (например, /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).
  • параметры Emulator указывают конечную точку bot, которая начинается с https .The Emulator settings specify a bot endpoint that begins with https. На локальном узле конечная точка должна начинаться с http.On localhost, the endpoint should begin with http.
  • параметры Emulator указывают значение поля идентификатора приложения microsoft и/или поля пароля microsoft app .The Emulator settings specify a value for the Microsoft App ID field and/or the Microsoft App Password field. Оба поля должны быть пустыми.Both fields should be empty.
  • Система безопасности бота не была отключена.Security has not been disabled of for the bot. Проверьте, чтобы не было значений идентификатора или пароля приложения в настройках бота.Verify that the bot does not specify a value for either app ID or password.

Шаг 2. Проверка идентификатора и пароля приложения ботаStep 2: Verify your bot's app ID and password

На этом шаге проверяется допустимость идентификатора и пароля приложения бота, которые используются для проверки подлинности.In this step, you will verify that the app ID and password that your bot will use for authentication are valid. (Если вы не знаете этих значений, получите их сейчас.)(If you do not know these values, obtain them now.)

Предупреждение

Приведенные ниже инструкции отключают проверку SSL для login.microsoftonline.com.The following instructions disable SSL verification for login.microsoftonline.com. Выполняйте эту процедуру только в защищенной сети и после этого измените пароль приложения.Only perform this procedure on a secure network and consider changing your application's password afterward.

Выдача HTTP-запроса к службе входа в систему MicrosoftIssue an HTTP request to the Microsoft login service

Эти инструкции описывают, как использовать cURL для HTTP-запроса к службе входа в систему Microsoft.These instructions describe how to use cURL to issue an HTTP request to the Microsoft login service. Можно использовать альтернативный инструмент, такой как Postman, просто убедитесь, что запрос соответствует протоколу проверки подлинности Bot Framework.You may use an alternative tool such as Postman, just ensure that the request conforms to the Bot Framework authentication protocol.

Чтобы убедиться, что идентификатор и пароль приложения бота действительны, выполните следующий запрос, используя cURL, заменив APP_ID и APP_PASSWORD идентификатором и паролем бота.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.

Совет

Пароль может содержать специальные символы, и тогда описанный ниже вызов будет недопустимым.Your password may contain special characters that make the following call invalid. В этом случае попробуйте преобразовать пароль в формат 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"

Этот запрос пытается обменять идентификатор и пароль бота на маркер доступа.This request attempts to exchange your bot's app ID and password for an access token. Если запрос будет успешным, вы получите полезные данные JSON, которые среди прочих содержат свойство access_token.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..."}

Если запрос выполняется успешно, нужно подтвердить, что идентификатор приложения и пароль, указанный в запросе, являются допустимыми.If the request is successful, you have verified that the app ID and password that you specified in the request are valid. Перейдите к Шагу 3.Proceed to Step 3.

Если пришло сообщение об ошибке в ответ на запрос, проверьте его, чтобы определить причину.If you receive an error in response to the request, examine the response to identify the cause of the error. Если ответ указывает, что идентификатор приложения или пароль недопустимы, получите правильные значения с портала Bot Framework и повторно отправьте запрос с новыми значениями, чтобы подтвердить, что они действительны.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.

Шаг 3. Включение системы безопасности и тестирования на локальном компьютере Step 3: Enable security and test on localhost

На этом шаге проверяется доступность и функциональность бота на локальном компьютере, когда система безопасности отключена, и подтверждается, что идентификатор приложения и пароль, которые бот будет использовать для аутентификации, действительны.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. На этом шаге убедитесь, что бот доступен и работает на локальном компьютере, когда включена система защиты.In this step, you will verify that your bot is accessible and functional on localhost when security is enabled.

Включение системы безопасностиEnable security

Безопасность бота зависит от служб Microsoft, даже если бот работает только на локальном компьютере.Your bot's security relies on Microsoft services, even when your bot is running only on localhost. Чтобы включить систему защиты для бота, отредактируйте его параметры конфигурации, чтобы заполнить идентификатор и пароль приложения с помощью значений, которые были подтверждены на Шаге 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. Кроме того, проверьте актуальность пакетов, особенно System.IdentityModel.Tokens.Jwt и Microsoft.IdentityModel.Tokens.Additionally, make sure your packages are up to date, specifically System.IdentityModel.Tokens.Jwt and Microsoft.IdentityModel.Tokens.

Если вы используете пакет SDK Bot Framework для .NET, заполните эти параметры в appsettings.config или аналогичные значения в файле 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>

Если используется пакет SDK Bot Framework для Node.js, заполните эти параметры (или обновите соответствующие переменные среды).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'
});

Примечание

Сведения о том, как найти значения AppID и AppPassword для бота, см. в разделе MicrosoftAppID и MicrosoftAppPassword.To find your bot's AppID and AppPassword, see MicrosoftAppID and MicrosoftAppPassword.

Тестирование бота на локальном компьютереTest your bot on localhost

Протестируйте бот на локальном компьютере с помощью Bot Framework Emulator.Next, test your bot on localhost by using the Bot Framework Emulator.

  1. Запустите бот на локальном компьютере.Start your bot on localhost.
  2. Установите Bot Framework Emulator.Start the Bot Framework Emulator.
  3. Подключение в bot с помощью Emulator.Connect to your bot using the Emulator.
    • введите http://localhost:port-number/api/messages в адресную строку Emulator, где номер порта соответствует номеру порта, указанному в браузере, где выполняется приложение.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.
    • Введите идентификатор приложения бота в поле Идентификатор приложения Microsoft.Enter your bot's app ID into the Microsoft App ID field.
    • Введите пароль приложения бота в поле Пароль приложения Microsoft.Enter your bot's password into the Microsoft App Password field.
    • Нажмите кнопку Соединить.Click Connect.
  4. чтобы проверить возможность подключения к bot, введите текст в Emulator и нажмите клавишу ввод.To test connectivity to your bot, type some text into the Emulator and press Enter.

Если бот реагирует на входные данные и в окне чата нет ошибок, значит бот доступен и работает на локальном компьютере, когда включена система безопасности.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. Перейдите к Шагу 4.Proceed to Step 4.

Если в окне чата указаны одна или несколько ошибок, щелкните по ошибке, чтобы узнать подробности.If one or more error(s) are indicated in the chat window, click the error(s) for details. Часто возникающие проблемы.Common issues include:

  • параметры Emulator указывают неправильную конечную точку для робота.The Emulator settings specify an incorrect endpoint for the bot. Убедитесь, что указан правильный номер порта в URL-адресе и правильный путь в конце URL-адреса (например, /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).
  • параметры Emulator указывают конечную точку bot, которая начинается с https .The Emulator settings specify a bot endpoint that begins with https. На локальном узле конечная точка должна начинаться с http.On localhost, the endpoint should begin with http.
  • в параметрах Emulator поле идентификатора приложения microsoft и (или) пароль приложения microsoft не содержат допустимые значения.In the Emulator settings, the Microsoft App ID field and/or the Microsoft App Password do not contain valid values. Оба поля должны быть заполнены и содержать соответствующие значения, которые были проверены на Шаге 2.Both fields should be populated and each field should contain the corresponding value that you verified in Step 2.
  • Для бота система безопасности не включена.Security has not been enabled for the bot. Убедитесь, что настройки конфигурации бота задают значения как для идентификатора приложения, так и для пароля.Verify that the bot configuration settings specify values for both app ID and password.

Шаг 4. Тестирование бота в облаке Step 4: Test your bot in the cloud

На этом шаге вы подтвердили, что бот доступен и функционирует на локальном узле, когда система безопасности отключена. Функционирование бота на локальном узле подтверждает, что идентификатор и пароль приложения бота являются допустимыми, когда включена система безопасности.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. На этом шаге разверните бот в облаке и убедитесь, что он доступен и работает там, где включена защита.In this step, you will deploy your bot to the cloud and verify that it is accessible and functional there with security enabled.

Развертывание бота в облакеDeploy your bot to the cloud

Bot Framework требует, чтобы боты были доступны из Интернета, поэтому нужно развернуть бот на платформе облачного размещения, такой ​​как 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. Не забудьте включить систему безопасности для бота до развертывания, как описано на Шаге 3.Be sure to enable security for your bot prior to deployment, as described in Step 3.

Примечание

Если у вас еще нет поставщика услуг размещения в облаке, вы можете зарегистрироваться для доступа к бесплатной учетной записи.If you do not already have a cloud hosting provider, you can register for a free account.

Если разворачивать бот в Azure, протокол SSL будет автоматически настроен для приложения, тем самым позволяя Bot Framework требовать конечную точку HTTPS.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. Если используется другой провайдер облачного размещения, убедитесь, что приложение настроено для протокола SSL, чтобы у бота была конечная точка 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.

Тестирование ботаTest your bot

Чтобы протестировать бот в облаке с включенной системой безопасности, выполните следующие действия.To test your bot in the cloud with security enabled, complete the following steps.

  1. Убедитесь, что бот успешно развернут и запущен.Ensure that your bot has been successfully deployed and is running.
  2. Войдите на портал Azure.Sign in to the Azure portal.
  3. На портале перейдите к колонке Регистрация каналов ботов.Navigate to the Bot Channels Registration for your bot within the portal.
  4. На панели слева Управление ботами щелкните элемент Тестирование в веб-чате.Click Test in Web Chat in the Bot management pane on the left.
  5. Чтобы проверить подключение к боту, введите текст в элемент управления "Веб-чат" и нажмите ВВОД.To test connectivity to your bot, type some text into the web chat control and press Enter.

Если в окне "Веб-чат" появится ошибка, используйте сообщение об ошибке, чтобы определить ее причину.If an error is indicated in the chat window, use the error message to determine the cause of the error. Часто возникающие проблемы.Common issues include:

  • Некорректная Конечная точка обмена сообщениями, указанная на странице Параметры для бота на портале Bot Framework.The Messaging endpoint specified on the Settings page for your bot in the Bot Framework Portal is incorrect. Убедитесь, что указан правильный путь в конце URL-адреса (например, /api/messages).Make sure you have included the proper path at the end of the URL (e.g., /api/messages).
  • Конечная точка обмена сообщениями, указанная на странице Параметры для бота на портале Bot Framework, не начинается с https или не поддерживается платформой 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. Бот должен иметь допустимую цепочку сертификатов системы безопасности.Your bot must have a valid, chain-trusted certificate.
  • Бот имеет отсутствующие или неверные значения для идентификатора или пароля приложения.The bot is configured with missing or incorrect values for app ID or password. Проверьте, чтобы настройки конфигурации бота определяли допустимые значения идентификатора и пароля приложения.Verify that the bot configuration settings specify valid values for app ID and password.

Если бот соответствующим образом реагирует на входные данные, нужно подтвердить, что бот доступен и успешно работает в облаке с включенной системой безопасности.If the bot responds appropriately to the input, you have verified that your bot is accessible and functional in the cloud with security enabled. На этом шаге бот готов безопасно подключиться к каналу, такому как Facebook Messenger, Direct Line и др.At this point, your bot is ready to securely connect to a channel such as Facebook Messenger, Direct Line, and others.

Дополнительные ресурсыAdditional resources

Если проблема не исчезла после выполнения действий, описанных выше, можно сделать следующее.If you are still experiencing issues after completing the steps above, you can: