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)”。
首先,我对该主题进行了研究,我在写这个问题时考虑了以下资源:
- Comment on issue #9498 @ azure-sdk-for-net
- Bot Framework - App registration - Single tenant vs Multi tenant
根据我的理解,所有这些答案都是这样的:
- 在 2021 年底之前,仅支持作为机器人身份的多租户应用程序
- 现在我应该可以使用 Single-tenat 进行应用程序注册,但这需要额外的配置
- 提到的更改生效的时刻是 Bot 尝试进行身份验证的时刻
正如其他机器人强制(明确)使用 ex 授权一样。 MicrosoftAppCredentials
- MS Teams 机器人在 XML 文件中以声明方式配置其授权详细信息,例如机器人服务中的 appsettings.json
。
如何使用 MS Teams 中使用的 Azure Bot 进行单租户应用程序注册? 或者目前不可能吗?
编辑:
对于未来 reader:使用答案,我准备了两个地方,您可以在其中访问传入 activity 的 TenantId 以执行白名单验证(在多租户设置中,因为单租户仍然无法在团队中工作) :
- 在
BotController
中:
[HttpPost]
public async Task PostAsync()
{
// Here using
//this.Request.Headers["X-Ms-Tenant-Id"].ToString()
}
- 在
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
现在,我在应用程序注册下配置了 MS Teams Bot 运行,以使用“任何组织目录中的帐户(任何 Azure AD 目录 - Multitenant)和个人 Microsoft 帐户(例如 Skype、Xbox)”。
首先,我对该主题进行了研究,我在写这个问题时考虑了以下资源:
- Comment on issue #9498 @ azure-sdk-for-net
- Bot Framework - App registration - Single tenant vs Multi tenant
根据我的理解,所有这些答案都是这样的:
- 在 2021 年底之前,仅支持作为机器人身份的多租户应用程序
- 现在我应该可以使用 Single-tenat 进行应用程序注册,但这需要额外的配置
- 提到的更改生效的时刻是 Bot 尝试进行身份验证的时刻
正如其他机器人强制(明确)使用 ex 授权一样。 MicrosoftAppCredentials
- MS Teams 机器人在 XML 文件中以声明方式配置其授权详细信息,例如机器人服务中的 appsettings.json
。
如何使用 MS Teams 中使用的 Azure Bot 进行单租户应用程序注册? 或者目前不可能吗?
编辑:
对于未来 reader:使用答案,我准备了两个地方,您可以在其中访问传入 activity 的 TenantId 以执行白名单验证(在多租户设置中,因为单租户仍然无法在团队中工作) :
- 在
BotController
中:
[HttpPost]
public async Task PostAsync()
{
// Here using
//this.Request.Headers["X-Ms-Tenant-Id"].ToString()
}
- 在
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