Microsoft Teams 的 Azure Bot App Reg 可以使用单一租户吗?

Can Azure Bot App Reg for Microsoft Teams use Single Tenant?

现在,我在应用程序注册下配置了 MS Teams Bot 运行,以使用“任何组织目录中的帐户(任何 Azure AD 目录 - Multitenant)和个人 Microsoft 帐户(例如 Skype、Xbox)”。

首先,我对该主题进行了研究,我在写这个问题时考虑了以下资源:

根据我的理解,所有这些答案都是这样的:

正如其他机器人强制(明确)使用 ex 授权一样。 MicrosoftAppCredentials - MS Teams 机器人在 XML 文件中以声明方式配置其授权详细信息,例如机器人服务中的 appsettings.json

如何使用 MS Teams 中使用的 Azure Bot 进行单租户应用程序注册? 或者目前不可能吗?

编辑:
对于未来 reader:使用答案,我准备了两个地方,您可以在其中访问传入 activity 的 TenantId 以执行白名单验证(在多租户设置中,因为单租户仍然无法在团队中工作) :

  1. BotController中:
        [HttpPost]
        public async Task PostAsync()
        {
            // Here using 
            //this.Request.Headers["X-Ms-Tenant-Id"].ToString()
        }
  1. TeamsActivityHandler 实例方法覆盖中:
    internal class /***/ : TeamsActivityHandler
    {
        //any method that have access to TurnContext or Activity
        public override Task /***/(ITurnContext<IInvokeActivity> turnContext, ...)
        {
            // Here using
            //turnContext.Activity.Conversation.TenantId
        }
    }

有了 TenantId,您可以将其与允许的租户进行比较,并相应地拒绝或允许。

我最近 运行 与此站点上的另一个用户讨论过这个问题,因为他们选择了单一租户,所以主动消息无法正常工作。这是最近的一个选项,它似乎与我的研究不符——我会选择 MultiTenant 选项。如果您真的需要阻止其他租户访问该机器人(这很值得推荐,因为任何 Teams 租户中的任何用户都可以访问机器人,最好 white-list 您的租户 ID (s)。这里有一个关于如何执行此操作的旧示例 - 尚未测试它是否仍然有效:https://github.com/OfficeDev/microsoft-teams-sample-complete-csharp/blob/master/template-bot-master-csharp/middleware/Middleware.cs