获取有关谁安装了 Microsoft Teams Bot 应用程序的信息
Get information about who installed a Microsoft Teams Bot App
我们已经使用 Microsoft Bot Framework(C# 和 Azure)构建了一个机器人应用程序,并在 dev.botframework.com 上使用了 Microsoft Teams Channel 以使用侧载在 MSTeams 上启用我们的机器人,但该机器人将成为商业机器人一个,所以我们需要一种方法让它只对我们的客户开放。
在 ms teams 上安装 bot 应用程序期间,当有人安装我们的应用程序时是否会引发任何事件,我们可以挂钩重定向 URL 或回调以接收信息在 "who installed our app (the user info, their team info, their company info, etc.)" 我遇到了一个商业应用程序 Microsoft Teams Jira Connector 但不知道他们是如何将其商业化的。
应该从我们的应用程序中启动安装,以便我们可以将许可、客户和 team/tenant 详细信息映射在一起,以便管理员代表他们的公司购买。
到目前为止我已经尝试了什么,
在机器人代码端,我们得到 tenant_id
,所以当机器人对 Microsoft 团队 added/installed 时,我正在搜索以检索类似的信息,但我无法找到很多。
我认为 OAuth 可能会有所帮助,因为 Slack 使用它来提供对用户工作区信息的访问,我已经尝试 OAuth 2.0 & v2.0 Protocols OAuth 2.0 我收到 access_token
但没有看到任何 API 的电话以获得 team/tenant 信息。
编辑:如果我可以使用 OAuth 和 API 获取 tenant_id 或他们的 ms 团队信息,过程将变得简单,就像关注
在我们的网站中,我们将要求用户单击一个按钮以使用 OAuth 授予对其 ms 团队的访问权限,并使用 access_token 我们将获取他们的 ms 团队信息并将其存储在我们的结尾映射到特定公司。
当用户发送消息时,我们会要求他们单击卡片中的 authenticate/activate 许可按钮,如果来自用户的团队信息与我们数据库中的记录匹配,则他是有效用户,我们激活许可证。
Microsoft Graph API 在这里有用吗?,MS teams developer API 似乎正在开发中
请对此提出您的建议。
由于评论的文字长度限制,抱歉我在这里生成答案,感谢理解。
正如@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
并将其设置为针对您的服务器请求的身份验证 header。
access_token
s 是 Auth 2.0 流程下的 JWT 令牌,因此您可以直接在后端服务器中解密此令牌以获取有关经过身份验证的用户的信息。
请参阅 https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-v2-tokens 了解 access_token
中针对 Azure AD 的声明。您可以利用 tenant ID
属性 来验证团队或团体购买的用户。我认为如果您不使用 Azure AD,在其他 Auth 2.0 服务器中也会有类似的 属性。
为了在我们的系统上没有个人用户帐户但没有概念的情况下进行身份验证。公司的许可证和管理员用户帐户。可以遵循以下做法,
在我们的网站上,我们将要求公司管理员单击一个按钮,以使用 OAuth 2.0 并使用检索到的 id_token
(JWT 令牌)向其 ms 团队授予访问权限,我们将获得他们的 MS 团队信息并将其存储在我们映射到特定公司的一端。
当用户发送消息时,我们会要求他们单击卡片中的 authenticate/activate 许可按钮,如果来自用户的团队信息与我们数据库中的记录相匹配,那么他是有效用户,我们激活许可证。
第 1 步确保我们的数据库中有我们的客户信息(租户 ID)(这将根据来自实际机器人用户的信息进行验证 - 当他们向我们的机器人发送消息时他们的租户 ID)
第 2 步通过租户 ID 验证并激活用户的许可证。
要执行 OAuth 2.0 流程 AuthBot sample code should be taken as a reference, you can also refer to OAuth 2.0 & v2.0 Protocols OAuth 2.0
当用户授予访问权限时,我们将获得授权代码,可用于请求访问令牌,我们可以从响应中获取 id_token
(JWT 令牌)并将其解码以检索用户信息https://jwt.io/.
检查 OAuth 2.0
中的 'Successful response' 和 'JWT Token Claims' 部分
但是,我发现没有个人用户帐户的缺点多于优点,我建议拥有个人用户帐户。在我们提出 'having individual accounts' 与 'not having' 的优缺点之后,产品所有者同意拥有个人用户帐户。
我们已经使用 Microsoft Bot Framework(C# 和 Azure)构建了一个机器人应用程序,并在 dev.botframework.com 上使用了 Microsoft Teams Channel 以使用侧载在 MSTeams 上启用我们的机器人,但该机器人将成为商业机器人一个,所以我们需要一种方法让它只对我们的客户开放。
在 ms teams 上安装 bot 应用程序期间,当有人安装我们的应用程序时是否会引发任何事件,我们可以挂钩重定向 URL 或回调以接收信息在 "who installed our app (the user info, their team info, their company info, etc.)" 我遇到了一个商业应用程序 Microsoft Teams Jira Connector 但不知道他们是如何将其商业化的。
应该从我们的应用程序中启动安装,以便我们可以将许可、客户和 team/tenant 详细信息映射在一起,以便管理员代表他们的公司购买。
到目前为止我已经尝试了什么,
在机器人代码端,我们得到 tenant_id
,所以当机器人对 Microsoft 团队 added/installed 时,我正在搜索以检索类似的信息,但我无法找到很多。
我认为 OAuth 可能会有所帮助,因为 Slack 使用它来提供对用户工作区信息的访问,我已经尝试 OAuth 2.0 & v2.0 Protocols OAuth 2.0 我收到 access_token
但没有看到任何 API 的电话以获得 team/tenant 信息。
编辑:如果我可以使用 OAuth 和 API 获取 tenant_id 或他们的 ms 团队信息,过程将变得简单,就像关注
在我们的网站中,我们将要求用户单击一个按钮以使用 OAuth 授予对其 ms 团队的访问权限,并使用 access_token 我们将获取他们的 ms 团队信息并将其存储在我们的结尾映射到特定公司。
当用户发送消息时,我们会要求他们单击卡片中的 authenticate/activate 许可按钮,如果来自用户的团队信息与我们数据库中的记录匹配,则他是有效用户,我们激活许可证。
Microsoft Graph API 在这里有用吗?,MS teams developer API 似乎正在开发中
请对此提出您的建议。
由于评论的文字长度限制,抱歉我在这里生成答案,感谢理解。
正如@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
并将其设置为针对您的服务器请求的身份验证 header。
access_token
s 是 Auth 2.0 流程下的 JWT 令牌,因此您可以直接在后端服务器中解密此令牌以获取有关经过身份验证的用户的信息。
请参阅 https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-v2-tokens 了解 access_token
中针对 Azure AD 的声明。您可以利用 tenant ID
属性 来验证团队或团体购买的用户。我认为如果您不使用 Azure AD,在其他 Auth 2.0 服务器中也会有类似的 属性。
为了在我们的系统上没有个人用户帐户但没有概念的情况下进行身份验证。公司的许可证和管理员用户帐户。可以遵循以下做法,
在我们的网站上,我们将要求公司管理员单击一个按钮,以使用 OAuth 2.0 并使用检索到的
id_token
(JWT 令牌)向其 ms 团队授予访问权限,我们将获得他们的 MS 团队信息并将其存储在我们映射到特定公司的一端。当用户发送消息时,我们会要求他们单击卡片中的 authenticate/activate 许可按钮,如果来自用户的团队信息与我们数据库中的记录相匹配,那么他是有效用户,我们激活许可证。
第 1 步确保我们的数据库中有我们的客户信息(租户 ID)(这将根据来自实际机器人用户的信息进行验证 - 当他们向我们的机器人发送消息时他们的租户 ID)
第 2 步通过租户 ID 验证并激活用户的许可证。
要执行 OAuth 2.0 流程 AuthBot sample code should be taken as a reference, you can also refer to OAuth 2.0 & v2.0 Protocols OAuth 2.0
当用户授予访问权限时,我们将获得授权代码,可用于请求访问令牌,我们可以从响应中获取 id_token
(JWT 令牌)并将其解码以检索用户信息https://jwt.io/.
检查 OAuth 2.0
中的 'Successful response' 和 'JWT Token Claims' 部分但是,我发现没有个人用户帐户的缺点多于优点,我建议拥有个人用户帐户。在我们提出 'having individual accounts' 与 'not having' 的优缺点之后,产品所有者同意拥有个人用户帐户。