Проверка подлинности OAuth2 для Microsoft Graph с использованием учетных данных службы - PullRequest
0 голосов
/ 22 января 2020

Я хотел бы создать веб-сервис, способный автоматически отправлять сообщения в Microsoft Teams. Я пытался аутентифицировать как приложение , но в настоящее время Microsoft не поддерживает предоставление приложениям разрешений на отправку сообщений в Команды, поэтому единственный вариант здесь - это аутентификация с использованием учетной записи службы с реальными учетными данными (разве есть другой способ? ). Этот метод указывает только использование взаимодействия с пользователем для входа в систему в качестве пользователя.

Я хотел бы использовать служебную учетную запись teamchatbot@domain.com для аутентификации в Microsoft Graph для отправки сообщений в команды Microsoft , (аналогично this , но так как я не обращаюсь к ресурсу, он немного отличается.) Есть ли способ, которым я могу молча получить токен доступа от имени учетной записи службы для отправки сообщений?

Ответы [ 2 ]

1 голос
/ 22 января 2020

Похоже, у вас неправильное понимание.

Ваша сцена на самом деле такая же, как это сообщение .

Вы должны использовать Учетные данные для пароля владельца ресурса для вызова Microsoft Graph API для отправки сообщений.

На основании разрешений вам необходимо делегированное разрешение Group.ReadWrite.All. Поэтому вам нужно сначала добавить это разрешение в ваше приложение Azure AD.

enter image description here

Не забудьте нажать кнопку «Предоставить согласие администратора для { ваш арендатор} "после добавления этого разрешения.

Затем вы можете получить токен доступа, подобный следующему:

enter image description here

Вы можете увидеть что https://graph.microsoft.com/Group.ReadWrite.All было включено в ответ.

Теперь вы можете использовать этот токен доступа для вызова POST /teams/{id}/channels/{id}/messages.

0 голосов
/ 22 января 2020

Есть несколько других способов, о которых я могу подумать.

1) Один из них заключается в том, что вы можете создать бота с помощью Microsoft Bot Framework , и как только этот бот будет установлен на конкретной команде, она может отправлять «проактивные» сообщения (т.е. не сообщение в ответ на сообщение пользователя, а, скорее всего, когда вам нужно).

По сути, когда добавляется ваш бот В команде вы получаете доступ к указанному событию c в вашем боте (OnMembersAdded для обычного бота, и теперь есть новое событие только для команд). Подробнее об этом можно узнать из моего ответа на Обнаружение события открытия бот-приложения . В этом случае вы получаете информацию, которая понадобится вам позже, которую вы можете сохранить в базе данных или где-либо еще, а затем создать сообщение, как если бы ваш бот отправлял сообщения на канал. Вы можете увидеть больше об этом на Программно отправлять сообщение боту в Microsoft Teams .

Этот параметр выше - большая работа, но полезная, если есть другие функции, которые вы хотите от бота (например, возможность получать сообщения от пользователей)

2) Другой, и еще более простой способ, - создать входящий веб-крючок непосредственно на канал. Вот пост о том, как сделать это с помощью PowerShell, так что вы можете сделать это для простого тестирования и экстраполировать оттуда для Node.

Конечно, такие вещи, как Flow (Power Automate), тоже возможны , но вы уже пишете код, так что одно из вышеперечисленного, вероятно, проще.

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...