Botframework на каналах команд 1: 1 Аутентификация AAD интегрирована - PullRequest
0 голосов
/ 28 июня 2018

Я хочу подключить своего бота к каналу команд, но я не знал, как обеспечить это для использования только в наших доменах (организация).

У меня есть тест на поиск (аутентификация AAD) для веб-приложения Azure, но он не работает в группах или в веб-чате, поскольку адрес конечной точки не перенаправляется.

У меня есть тест для реализации карты AUTH, но он не работает в командах.

Примечание: я использую botframework C # api BotBuilder 3.15.2.2

Я выгляжу как "спросить", как: AAD-аутентификация в командах Microsoft для Bot Framework

Можно ли получить доступ к пользовательским вкладкам в чатах 1: 1 в командах MS?

https://docs.microsoft.com/en-us/microsoftteams/platform/concepts/authentication/auth-flow-bot

https://docs.microsoft.com/en-us/microsoftteams/platform/concepts/authentication/auth-bot-AAD

https://docs.microsoft.com/en-us/microsoftteams/platform/concepts/authentication/authentication

https://tsmatz.wordpress.com/2016/09/06/microsoft-bot-framework-bot-with-authentication-and-signin-login/

С уважением, Паскаль.

Редактировать: Я реализовал решение, предложенное Адрианом, ниже был фрагмент кода C #, который реализует это в MessasController.cs (Post Function): Примечание ==> Добавление доступа для локального использования

 //https://stackoverflow.com/questions/51090597/botframework-on-teams-channel-11-authentication-aad-integrated
 string tenantIdAAD = "";
 try
 {
     tenantIdAAD = activity.GetChannelData<TeamsChannelData>().Tenant.Id;
 }
 catch (Exception exception)
 {
     tenantIdAAD = "";
 }

 ConnectorClient connector = new ConnectorClient(new Uri(activity.ServiceUrl));

 if ([AAD_TenantID].TenantIdAAD.Equals(tenantIdAAD) || activity.ServiceUrl.StartsWith("http://localhost") )
 {
     await Conversation.SendAsync(activity, () => new Dialogs.RootDialog().LogIfException());
 }
 else
 {
     await connector.Conversations.ReplyToActivityAsync(activity.CreateReply("Access Denied"));
 }

1 Ответ

0 голосов
/ 28 июня 2018

Входящее сообщение содержит информацию, которую вы можете использовать для идентификации пользователя. Сообщение выглядит так:

{ ... "from": { "id": "29:1XJKJMvc5GBtc2JwZq0oj8tHZmzrQgFmB39ATiQWA85gQtHieVkKilBZ9XHoq9j7Zaqt7CZ-NJWi7me2kHTL3Bw", "name": "Richard Moe", "aadObjectId": "ae361bee-9946-4082-99dc-6994b00ceebb" }, "channelData": { "tenant": { "id": "72f988bf-86f1-41af-91ab-2d7cd011db47" } } }

channelData.tenant.id идентифицирует организацию (арендатора O365), в которую входит пользователь, так что вы можете посмотреть на нее и отклонить сообщения, которые не принадлежат тем, которые вы ожидаете.

Сообщение также имеет идентификатор объекта AAD отправителя в from.aadObjectId. Поток аутентификации в приведенных выше ссылках полезен, если вам нужны токены для предоставления другим сервисам, чтобы вы могли действовать от имени пользователя, но если все, что вам нужно, это клиент и личность пользователя, в сообщении есть все, что вам нужно.

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

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