San*_*pas 7 c# azure-active-directory botframework microsoft-teams
我想在团队频道上连接我的机器人,但我不知道如何确保仅在我们的域(组织)中使用它.
我已经测试了Azure Web App的(身份验证AAD),但它不适用于团队或网络聊天,因为端点不会重定向它.
我有测试来实现AUTH卡,但它不适用于团队.
注意:我正在使用botframework C#api BotBuilder 3.15.2.2
我看起来像其他"问": 微软团队为Bot Framework进行AAD身份验证
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
真诚的,帕斯卡尔.
编辑:我已经实现了Adrian提取的解决方案,下面是一段在MessasController.cs(Post Function)上实现此功能的C#代码:注意==>为localhost使用添加访问权限
//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"));
}
Run Code Online (Sandbox Code Playgroud)
Adr*_*lis 10
传入消息包含可用于标识用户的信息.消息如下所示:
{
...
"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对象ID from.aadObjectId.如果您需要令牌提供给其他服务以便您可以代表用户行事,则上述链接中的身份验证流程非常有用,但如果您需要的只是用户的租户和身份,则该消息可满足您的所有需求.
(在信任消息中的任何信息之前,请记住首先验证传入的请求.)
| 归档时间: |
|
| 查看次数: |
720 次 |
| 最近记录: |