如何针对Azure AD对MS团队用户进行身份验证

时间:2017-10-13 20:56:37

标签: azure-active-directory botframework

我正在尝试创建一个可以部署到MS团队(和Skype for Business)的机器人。我看到当用户与机器人交互时,他们会提供channelData.tenant.id,而Bot Framework文档会说这是用户的租户ID。"我想知道我是否可以使用此(或来自入站消息的另一条信息)来验证用户对我的Azure AD?此外,这是否需要我通过身份验证流程对用户进行身份验证,就像使用AuthBot一样?(https://github.com/MicrosoftDX/AuthBot

任何帮助都会很棒!

1 个答案:

答案 0 :(得分:0)

tenant.id中提供了channelData,因此您可以使用它来制作一些海关请求,例如图谱API。

对于MS团队,您还可以通过调用GetConversationMembersAsync并在您获得的成员上调用AsTeamsChannelAccount方法来获取更多信息(此方法包含在{{1 NuGet包)

样品:

Microsoft.Bot.Connector.Teams

通过此次调用,您将获得其他有趣的值:// Fetch the members in the current conversation var connector = new ConnectorClient(new Uri(context.Activity.ServiceUrl)); var members = await connector.Conversations.GetConversationMembersAsync(context.Activity.Conversation.Id); // Concatenate information about all the members into a string var sb = new StringBuilder(); foreach (var member in members.Select(m => m.AsTeamsChannelAccount())) { sb.AppendLine($"GivenName = '{member.Name}', Email = '{member.Email}', User Principal Name '{member.UserPrincipalName}', AAD ObjectId '{member.ObjectId}', TeamsMemberId = '{member.Id}'"); } // Post the member info back into the conversation await context.PostAsync($"People in this conversation: {sb.ToString()}"); Email(这是用户的Azure AD对象ID)。

作为结论,如果您需要执行一些经过身份验证的逻辑,您仍然需要记录您的用户,但在MS Teams案例中,您可以获得更多信息和方法。