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

如何在Microsoft Teams中实现Tab与Bot的外部IDP SSO令牌共享?

解决方案:Teams Tab与Bot Framework的第三方IDP令牌共享

方案1:手动将Tab令牌存入Bot Framework Token Store

Tab端通过HTML SSO获取到第三方IDP的令牌后,将令牌传递给你的后端服务,由后端调用Bot Framework的Token Management API完成令牌存入:

  • 后端需持有Bot的Microsoft App ID和Microsoft App Password,用于API请求的身份验证
  • 调用接口:POST /api/usertokens/{userId}/tokens/{connectionName},其中:
    • userId必须是Teams认可的用户唯一标识(Tab可通过Teams JS SDK的microsoftTeams.getContext()获取userObjectId或userPrincipalName)
    • connectionName是你在Bot Framework Portal中配置的第三方IDP连接名称
    • 请求体需包含令牌核心信息:access_token、expires_in、token_type等
  • 存入完成后,Bot即可通过GetUserTokenAsync方法从Token Store中读取该令牌

方案2:通过后端中转的临时凭证传递

若不想依赖Bot Framework的Token Store,可通过自定义后端实现令牌安全中转:

  • Tab获取令牌后,将其存入你的后端系统,同时生成一个短期有效、一次性的临时凭证ID
  • Tab触发Bot交互时,将这个临时凭证ID附加到消息的自定义属性中发送给Bot
  • Bot收到消息后,携带自身身份凭证(如Bot App ID签名)调用你的后端,用临时凭证ID换取真实的access_token
  • 后端验证请求来源为合法Bot后,返回令牌供Bot使用

方案3:让Bot复用Tab的SSO会话(推荐)

配置Bot使用与Tab完全一致的第三方IDP连接,实现会话复用:

  • 在Bot Framework Portal中创建与Tab匹配的第三方IDP连接,确保权限范围、客户端ID等配置完全相同
  • 当Bot需要访问第三方服务时,调用GetUserTokenAsync方法:若Token Store中无对应令牌,Bot会自动发起SSO请求
  • 由于用户已在Tab端完成SSO登录,Teams会自动复用现有身份会话,用户无需重复登录,Bot即可静默获取令牌并存入Token Store

关键注意事项

  • 安全优先:禁止在前端直接传递access_token,所有令牌的传递、存储必须通过后端中转,避免泄露风险
  • 用户标识统一:Tab与Bot使用的用户ID必须保持一致,确保Token Store中的令牌能正确关联到对应用户
  • 权限范围匹配:Tab与Bot获取的令牌权限范围需覆盖各自业务需求,避免出现权限不足问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 16:11:06