团队通道1:1上的botframework集成了身份validationAAD

我想在团队频道上连接我的机器人,但我不知道如何确保仅在我们的域(组织)中使用它。

我已经测试了Azure Web App的(身份validationAAD),但它不适用于团队或网络聊天,因为端点不会重定向它。

我有测试来实现AUTH卡,但它不适用于团队。

注意:我正在使用botframework C#api BotBuilder 3.15.2.2

我看起来像其他“问”: 微软团队为Bot Framework进行AAD身份validation

是否可以在MS Teams的1:1聊天中访问自定义选项卡?

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

Build BOT working with Authentication (Azure Bot Service)

真诚的,帕斯卡尔。

编辑:我已经实现了Adrian提取的解决方案,下面是一段在MessasController.cs上实现此function的C#代码(Post Function):注意==>为localhost使用添加访问权限

//https://stackoverflow.com/questions/51090597/botframework-on-teams-channel-11-authentication-aad-integrated string tenantIdAAD = ""; try { tenantIdAAD = activity.GetChannelData().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")); } 

传入消息包含可用于标识用户的信息。 消息如下所示:

{ ... "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租户),因此您可以查看该组织并拒绝不是您期望的消息。

该消息还具有from.aadObjectId发件人的AAD对象ID。 如果您需要令牌提供给其他服务以便您可以代表用户执行操作,则上述链接中的身份validation流程非常有用,但如果您需要的只是用户的租户和身份,则该消息可满足您的所有需求。

(在信任消息中的任何信息之前,请记住首先validation传入的请求 。)