Как я могу использовать Bot Builder для отправки аутентифицированного запроса стороннему сервису? - PullRequest
0 голосов
/ 20 сентября 2019

Я создаю бота Microsoft Teams, который позволит пользователю входить в систему с помощью стороннего OAuth и делать аутентифицированные запросы к веб-сервисам сторонних разработчиков.Я могу использовать OAuthPrompt для входа в систему со своим сторонним поставщиком OAuth, используя соединение, установленное в Azure Bot Services.Когда я аутентифицируюсь, я получаю guid, который, предположительно, является ключом, который соответствует моему токену OAuth в сервисе токенов Bot Framework.

Мне неясно, как использовать этот guid для выполнения аутентифицированных запросов к моему веб-сервису.Документация гласит (выделено мое):

Для выполнения определенных операций от имени пользователя ... бот должен будет вызвать внешнюю службу, такую ​​как Microsoft Graph., GitHub или REST сервис компании .Каждая внешняя служба имеет способ защиты этих вызовов, и распространенным способом защиты такого вызова является отправка этих запросов с использованием токена пользователя, который однозначно идентифицирует пользователя в этой внешней службе (иногда называемой JWT).

Эта документация указывает мне, что должна быть возможность использовать запросы на проверку подлинности для моего веб-службы через службу Bot Token Framework или что должна быть возможность получить мой OAuth-токен, чтобы отправлять проверенные запросы непосредственно на мою службуот моего бота.Я не могу найти ни одного примера, чтобы кто-то делал это, и провел дни, просматривая документацию и исходные репозитории botbuilder.

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

Я использую Bot Builder v4 и эмулятор Bot Framework.

1 Ответ

1 голос
/ 23 сентября 2019

Вы можете сделать это абсолютно.Я укажу вам правильную документацию, чтобы посмотреть на нее.

Во-первых, вы захотите использовать Образец команды OAuth .У меня есть PR , чтобы добавить инструкции для его правильной работы, но суть этого:

  1. Добавить аутентификацию вашему боту
  2. Добавьте свое имя соединения OAuth к клавише ConenctionName в appsettings.json (вместе с appid / паролем)
  3. Включите канал команд
  4. Установите своего бота в команды через App Studio , убедившись, что вы добавили token.botframework.com в Действительные домены (Примечание. В App Studio это Manifest Editor > Your App > Domains and Permissions)

После аутентификации он вернет токен и проверит его для каждого сообщения.Если у вас есть конкретный поставщик OAuth, которого нет в списке параметров OAuth на портале Azure, и если у него есть бесплатная пробная версия, сообщите мне об этом, и я могу помочь вам проверить его.Ключ заключается в том, что после ввода настроек вы сохраняете и нажимаете кнопку «Тест», чтобы убедиться, что он работает на портале Azure, прежде чем добавить его в свой бот.

...