You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多租户Azure Bot测试失败:Unauthorized错误排查求助

多租户Azure Bot跨租户调用TeamsInfo.GetTeamChannelsAsync问题解答

1. 多租户Azure Bot使用TeamsInfo.GetTeamChannelsAsync是否存在限制?

有明确限制。TeamsInfo.GetTeamChannelsAsync本质是调用Microsoft Graph API获取团队频道数据,而turnContext.Activity.TeamsGetTeamInfo()是直接从当前对话的Activity载荷中提取已有的团队基础信息,不需要额外调用外部API。在多租户场景下,Bot默认的身份凭证没有权限直接跨租户访问Graph的Teams频道数据,这就是导致鉴权失败的核心原因。

2. 跨租户调用该接口是否需要额外的权限、同意或配置?

需要,具体要求如下:

  • 添加Graph应用权限:在你的多租户应用注册中,添加Channel.ReadBasic.All(或更高权限如Group.Read.All,按需选择)的应用权限(注意是应用权限,不是委托权限),因为Bot是后台服务身份调用Graph,而非用户上下文。
  • 跨租户权限同意:目标测试租户的管理员必须对Bot的这些应用权限进行同意操作。因为多租户应用的权限不会自动在其他租户生效,必须由目标租户管理员完成跨租户权限授予。
  • 令牌获取配置:确保Bot在调用Graph时,使用客户端凭证流程(Client Credentials Flow)获取针对Graph(受众为https://graph.microsoft.com)的应用令牌,而非用户上下文的令牌。

3. 既然Azure Bot资源中的「应用租户ID」字段为必填项,这是否会限制Bot在其他租户中工作,即便应用注册本身是多租户的?

不会。这个「应用租户ID」仅标识Bot对应的应用注册所属的原始租户(也就是你创建多租户应用的那个租户),它只是Bot资源的归属标识,不会限制Bot在其他租户中运行。只要你的应用注册配置为「任何组织目录中的账户(多租户)」,且目标租户已完成必要的权限同意(如果涉及Graph调用),Bot就能正常在其他租户工作。

内容的提问来源于stack exchange,提问作者Devesh Tiwari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 12:12:06