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

多租户下Teams侧载Bot识别安装租户的技术方案咨询

Teams机器人多租户场景解决方案

一、识别租户ID:直接从机器人活动提取

机器人接收的所有活动(包括应用安装到频道时触发的conversationUpdate事件)中,自带租户标识,无需额外认证:

  • 开发时从活动对象中提取conversation.tenantId字段(C#对应activity.Conversation.TenantId,Node.js对应activity.conversation.tenantId),该值为租户唯一ID,可直接用于区分不同客户组织。

二、多租户令牌获取方案

方案1:Application权限 + 应用包声明(推荐)

满足客户仅需安装授权的极简操作要求:

  1. 在Azure AD应用注册中添加所需的Application权限(如Organization.Read.All),并将应用设置为多租户。
  2. 在Teams应用清单(manifest.json)中,通过webApplicationInfo节点关联你的Azure AD应用ID,并在authorization.permissions.resourceSpecific中声明所需的Graph权限。
  3. 客户管理员安装应用包时,Teams会自动引导完成权限同意流程,无需登录Azure Portal手动配置。
  4. 使用Client Credentials Flow获取Graph令牌:
    POST https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/token
    Content-Type: application/x-www-form-urlencoded
    
    client_id={your-app-id}&scope=https://graph.microsoft.com/.default&client_secret={your-app-secret}&grant_type=client_credentials
    
    拿到令牌后即可调用Graph API,适配多租户场景。

方案2:Delegated权限适配频道场景

若需使用Delegated权限,可利用机器人的系统身份:

  1. 在Azure AD应用注册中添加所需Delegated权限(如Organization.Read.All),设置应用为多租户,并在应用清单中声明权限,让管理员安装时完成同意。
  2. 从机器人活动中获取机器人的身份令牌,通过On-Behalf-Of流程请求Graph令牌:
    POST https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/token
    Content-Type: application/x-www-form-urlencoded
    
    grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&client_id={your-app-id}&client_secret={your-app-secret}&assertion={bot-id-token}&scope=https://graph.microsoft.com/Organization.Read.All&requested_token_use=on_behalf_of
    
    此方式无需用户交互,适配频道/团队等非一对一聊天场景。

三、获取组织名称的多租户适配

通过Graph API直接获取,无需额外适配:

  • 调用GET https://graph.microsoft.com/v1.0/organization接口,响应中的displayName字段即为租户组织名称。
  • 使用Client Credentials Flow时,令牌已绑定租户,直接调用接口即可;使用On-Behalf-Of流程时,令牌同样关联租户上下文,结果准确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 17:01:14