获取有关谁安装了Microsoft Teams Bot App的信息

时间:2017-10-31 14:55:59

标签: c# azure oauth-2.0 botframework microsoft-teams

我们使用Microsoft Bot Framework(C#和Azure)构建了一个bot应用程序,并使用dev.botframework.com上的Microsoft Teams Channel在MSTeams上使用sideloading启用我们的bot,但是这个bot将是一个商业机器人,所以我们需要一种方法,只有我们的客户才能访问它。

  1. 在ms团队安装僵尸网络应用程序期间,当有人安装我们的应用程序时会引发任何事件,我们可以挂钩重定向URL或回调以接收有关“谁安装了我们的应用程序”的信息用户信息,他们的团队信息,他们的公司信息等。“我遇到了一个商业应用Microsoft Teams Jira Connector,但无法弄清楚他们是如何商业化的。

  2. 应该从我们的应用程序中启动安装,以便我们可以映射许可,客户和安装;团队/租户详细说明代表公司进行管理采购。

  3. 到目前为止我尝试过的,

    在bot代码端,我们得到tenant_id所以当我向微软团队添加/安装机器人时,我正在搜索类似的信息,但我找不到多少。

    思考OAuth可能会有所帮助,因为Slack使用它来提供对用户工作空间信息的访问,我已经尝试过OAuth 2.0& v2.0 Protocols OAuth 2.0我收到了access_token,但没有看到要调用的API以获取团队/租户信息。

    编辑:如果我可以使用OAuth和API获取tenant_id或他们的ms团队信息,过程将变得简单,如下所示

    1. 在我们的网站中,我们会要求用户点击按钮以使用OAuth授予其ms团队访问权限,并使用access_token我们将获取他们的ms团队信息并将其存储在我们的映射到特定公司的末尾。

    2. 当用户发送消息时,我们会要求他们点击卡中的身份验证/激活许可证按钮,如果来自用户的团队信息与我们数据库中的记录匹配,则他是有效用户,我们激活许可证。

    3. Microsoft Graph API在这里有用吗?MS teams developer API似乎正在开发中

      请就此提出建议。

1 个答案:

答案 0 :(得分:0)

由于评论的文字长度限制,请为此道歉,感谢您的理解。

正如@ bill-bliss-msft在评论中提到的那样,在https://msdn.microsoft.com/en-us/microsoft-teams/botevents#bot-or-user-added-to-a-team显示安装或删除机器人时会发生一个事件,但它不包含用户信息。

对于您的方案,常见的想法是在购买的用户使用机器人时对其进行身份验证。在https://github.com/MicrosoftDX/AuthBot/tree/master/AuthBot有一个样本。您可以在bot客户端中获取access_token,并将其设置为针对服务器请求的身份验证标头。

access_token是Auth 2.0流程下的JWT令牌,因此您可以直接在后端服务器中解密此令牌,以获取有关经过身份验证的用户的信息。

请参阅https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-v2-tokens,了解Azure AD中access_token的声明。您可以利用tenant ID属性对团队或组购买的用户进行身份验证。我认为如果您不使用Azure AD,其他Auth 2.0服务器中将存在类似的属性。