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

ОБЛАСТЬ ПРИМЕНЕНИЯ: ПАКЕТ SDK версии 4

Это руководство поможет при устранении неполадок проверки подлинности с помощью бота, оценивая ряд сценариев, чтобы определить, где существует проблема.

Примечание.

Чтобы выполнить все действия в этом руководстве, необходимо скачать и использовать эмулятор Bot Framework и иметь доступ к параметрам регистрации бота в портал Azure.

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

Безопасность бота настраивается с помощью идентификатора приложения Microsoft и пароля приложения Microsoft, которые вы получаете при регистрации бота с помощью Bot Framework. Эти значения обычно указаны в файле конфигурации бота и используются для получения маркеров доступа из службы учетной записи Microsoft.

Если вы еще не сделали этого, разверните бота в Azure, чтобы получить идентификатор приложения Майкрософт и пароль приложения Майкрософт, который он может использовать для проверки подлинности.

Примечание.

Сведения о том, как найти значения AppID и AppPassword для развернутого бота, см. в разделе MicrosoftAppID и MicrosoftAppPassword.

Шаг 1. Отключение системы безопасности и тестирование на локальном компьютере

На этом шаге вы убедитесь, что бот доступен и работает в localhost при отключении безопасности.

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

Отключение системы защиты бота может позволить неизвестным злоумышленникам выдавать себя за пользователей. Реализуйте следующую процедуру, если вы работаете в защищенной среде отладки.

Отключение безопасности

Чтобы отключить систему защиты бота, измените его параметры конфигурации и удалите значения идентификатора и пароля приложения.

Если вы используете пакет SDK Bot Framework для .NET, добавьте или измените параметры в файле appsettings.json :

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

Тестирование бота на локальном компьютере

Протестируйте бот на локальном компьютере с помощью Bot Framework Emulator.

  1. Запустите бот на локальном компьютере.
  2. Установите Bot Framework Emulator.
  3. Подключение боту с помощью эмулятора.
    • Введите http://localhost:port-number/api/messages в адресную строку эмулятора, где номер порта совпадает с номером порта, отображаемым в браузере, где работает ваше приложение.
    • Убедитесь, что поля идентификатора приложения Microsoft и пароля приложения Microsoft пусты.
    • Щелкните Подключить.
  4. Чтобы проверить подключение к боту, введите текст в эмуляторе и нажмите клавишу ВВОД.

Если бот отвечает на входные данные и нет ошибок в окне чата, вы убедились, что бот доступен и работает в localhost при отключении безопасности. Перейдите к Шагу 2.

Если в окне чата указаны одна или несколько ошибок, щелкните по ошибке, чтобы узнать подробности. Общие проблемы:

  • Параметры эмулятора указывают неправильную конечную точку для бота. Убедитесь, что вы включили правильный номер порта в URL-адрес и правильный путь в конце URL-адреса, например /api/messages.
  • Параметры эмулятора указывают конечную точку бота, начинающуюся с https. На локальном узле конечная точка должна начинаться с http.
  • Параметры эмулятора указывают значение поля идентификатора приложения Майкрософт и (или) поля "Пароль приложения Майкрософт". Оба поля должны быть пустыми.
  • Безопасность не отключена для бота. Убедитесь , что бот не указывает значение для идентификатора приложения или пароля.

Шаг 2. Проверка идентификатора и пароля приложения бота

На этом шаге вы убедитесь, что идентификатор приложения и пароль, которые бот будет использовать для проверки подлинности. (Если вы не знаете эти значения, получите их сейчас.)

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

Приведенные ниже инструкции отключают проверку SSL для login.microsoftonline.com. Выполняйте эту процедуру только в защищенной сети и после этого измените пароль приложения.

Выдача HTTP-запроса к службе входа в систему Microsoft

Эти инструкции описывают, как использовать cURL для HTTP-запроса к службе входа в систему Microsoft. Можно использовать альтернативный инструмент, такой как Postman, просто убедитесь, что запрос соответствует протоколу проверки подлинности Bot Framework.

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

Совет

Пароль может содержать специальные символы, и тогда описанный ниже вызов будет недопустимым. В этом случае попробуйте преобразовать пароль в формат URL-адреса.

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"

Этот запрос пытается обменять идентификатор и пароль бота на маркер доступа. Если запрос выполнен успешно, вы получите полезные данные JSON, содержащие свойство, среди прочего access_token .

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

Если запрос выполнен успешно, вы убедились, что идентификатор приложения и пароль, указанные в запросе, действительны. Перейдите к Шагу 3.

Если пришло сообщение об ошибке в ответ на запрос, проверьте его, чтобы определить причину. Если ответ указывает, что идентификатор приложения или пароль недопустимый, получите правильные значения на портале Bot Framework и повторно выполните запрос с новыми значениями, чтобы убедиться, что они действительны.

Шаг 3. Включение безопасности и тестирование на localhost

На этом этапе вы убедились, что бот доступен и работает в localhost при отключении безопасности и подтвердил, что идентификатор приложения и пароль, которые бот будет использовать для проверки подлинности. На этом шаге вы убедитесь, что бот доступен и работает в localhost при включении безопасности.

Включение безопасности

Безопасность бота зависит от служб Microsoft, даже если бот работает только на локальном компьютере. Чтобы включить систему защиты для бота, отредактируйте его параметры конфигурации, чтобы заполнить идентификатор и пароль приложения с помощью значений, которые были подтверждены на Шаге 2. Кроме того, проверьте актуальность пакетов, особенно System.IdentityModel.Tokens.Jwt и Microsoft.IdentityModel.Tokens.

Если вы используете пакет SDK Bot Framework для .NET, заполните эти параметры в appsettings.config или аналогичные значения в файле appsettings.json:

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

Если используется пакет SDK Bot Framework для Node.js, заполните эти параметры (или обновите соответствующие переменные среды).

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

Примечание.

Сведения о том, как найти значения AppID и AppPassword для бота, см. в разделе MicrosoftAppID и MicrosoftAppPassword.

Тестирование бота на локальном компьютере

Протестируйте бот на локальном компьютере с помощью Bot Framework Emulator.

  1. Запустите бот на локальном компьютере.
  2. Установите Bot Framework Emulator.
  3. Подключение боту с помощью эмулятора.
    • Введите http://localhost:port-number/api/messages в адресную строку эмулятора, где номер порта совпадает с номером порта, отображаемым в браузере, где работает ваше приложение.
    • Введите идентификатор приложения бота в поле Идентификатор приложения Microsoft.
    • Введите пароль приложения бота в поле Пароль приложения Microsoft.
    • Щелкните Подключить.
  4. Чтобы проверить подключение к боту, введите текст в эмуляторе и нажмите клавишу ВВОД.

Если бот отвечает на входные данные и в окне чата нет ошибок, вы убедились, что бот доступен и работает в localhost при включении безопасности. Перейдите к Шагу 4.

Если в окне чата указаны одна или несколько ошибок, щелкните по ошибке, чтобы узнать подробности. Общие проблемы:

  • Параметры эмулятора указывают неправильную конечную точку для бота. Убедитесь, что вы включили правильный номер порта в URL-адрес и правильный путь в конце URL-адреса, например /api/messages.
  • Параметры эмулятора указывают конечную точку бота, начинающуюся с https. На локальном узле конечная точка должна начинаться с http.
  • В параметрах эмулятора поле идентификатора приложения Майкрософт и (или) пароль приложения Майкрософт не содержит допустимых значений. Оба поля должны быть заполнены и содержать соответствующие значения, которые были проверены на Шаге 2.
  • Безопасность не включена для бота. Убедитесь, что настройки конфигурации бота задают значения как для идентификатора приложения, так и для пароля.

Шаг 4. Тестирование бота в облаке

На этом этапе вы убедились, что бот доступен и работает в localhost при отключении безопасности, подтвердил, что идентификатор приложения и пароль бота действителен, и проверено, что бот доступен и работает в localhost при включении безопасности. На этом шаге вы развернете бота в облаке и убедитесь, что он доступен и работает там с включенной безопасностью.

Развертывание бота в облаке

Bot Framework требует, чтобы боты были доступны из Интернета, поэтому нужно развернуть бот на платформе облачного размещения, такой ​​как Azure. Не забудьте включить систему безопасности для бота до развертывания, как описано на Шаге 3.

Примечание.

Если у вас еще нет поставщика облачного размещения, вы можете зарегистрировать бесплатную учетную запись.

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

Протестируйте бота

Чтобы протестировать бот в облаке с включенной системой безопасности, выполните следующие действия.

  1. Убедитесь, что бот успешно развернут и запущен.
  2. Войдите на портал Azure.
  3. Перейдите к ресурсу Azure Bot для бота на портале.
  4. На панели слева Управление ботами щелкните элемент Тестирование в веб-чате.
  5. Чтобы проверить подключение к боту, введите текст в элемент управления "Веб-чат" и нажмите ВВОД.

Если в окне "Веб-чат" появится ошибка, используйте сообщение об ошибке, чтобы определить ее причину. Общие проблемы:

  • Некорректная Конечная точка обмена сообщениями, указанная на странице Параметры для бота на портале Bot Framework. Убедитесь, что вы включили правильный путь в конце URL-адреса, например /api/messages.
  • Конечная точка обмена сообщениями, указанная на странице Параметры бота на портале Bot Framework, не начинается https или не является доверенным в Bot Framework. Бот должен иметь допустимую цепочку сертификатов системы безопасности.
  • Бот имеет отсутствующие или неверные значения для идентификатора или пароля приложения. Проверьте, чтобы настройки конфигурации бота определяли допустимые значения идентификатора и пароля приложения.

Если бот отвечает соответствующим образом на входные данные, вы убедились, что бот доступен и работает в облаке с включенной безопасностью. На этом шаге бот готов безопасно подключиться к каналу, такому как Facebook Messenger, Direct Line и др.

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

Если после выполнения описанных выше действий по-прежнему возникают проблемы, вы можете: