在机器人中为自适应卡片通用操作启用 SSO

借助 Teams 中的单一登录 (SSO) ,应用用户可以使用 Teams 访问机器人中的自适应卡片通用操作。 使用 Microsoft 或 Microsoft 365 帐户登录到 Teams 后,应用用户无需再次登录即可使用你的应用。 你的应用可供任何设备上通过Microsoft Entra ID 授予访问权限的应用用户使用。

有关自适应卡片的通用操作的详细信息,请参阅 自适应卡片的通用操作

自适应卡片通用操作使用机器人作为处理操作的常见后端,并引入了新的操作类型。 机器人使用 Bot Framework 处理与应用用户的通信,并向机器人发送和接收访问令牌,以便进行 SSO 身份验证。 同样,自适应卡片通用操作也使用 Bot Framework 来启用 SSO 身份验证。

在为自适应卡片通用操作启用 SSO 之前,请确保已为机器人启用 SSO。

运行时 Teams 中的 SSO

可以通过为当前登录的 Teams 应用用户获取访问令牌来启用机器人中自适应卡片通用操作的 SSO。 此过程涉及机器人应用客户端和服务器、Teams 客户端、Bot Framework 和Microsoft Entra ID。 在此交互期间,应用用户必须同意在多租户环境中获取访问令牌。

下图显示了当 Teams 应用用户尝试访问机器人中的自适应卡片通用操作时 SSO 的工作原理:

屏幕截图显示机器人中自适应卡片通用操作的 SSO 流。

# 交互 这是怎么回事
1 Teams 客户端→机器人服务 Teams 向机器人发送调用 Action.Execute 请求。
如果应用用户以前已登录,则会将令牌保存在 Bot Framework 令牌存储中。 机器人调用 Bot Framework 令牌服务,该服务在 Bot Framework 令牌存储中检查应用用户的现有令牌。
• 如果令牌存在,则向应用用户授予访问权限。
• 如果令牌不可用,机器人将触发身份验证流。
2 Microsoft Entra ID → Teams 客户端 对于首次在机器人中使用自适应卡片通用操作的应用用户,只有在应用用户同意后才能进行令牌交换。 Teams 客户端向应用用户显示一条消息,表示同意。
如果同意失败:
1. 身份验证回退到登录提示,应用用户必须登录才能使用机器人应用。 “登录”按钮显示在 Teams 客户端中,当应用用户选择它时,会显示“Microsoft Entra登录”页。
2.应用用户登录并授予对机器人服务的访问权限。
3 Teams 客户端→机器人服务 Teams 客户端将调用 Action.Execute 请求与令牌一起重新发送给机器人。
机器人服务发送具有 OAuth 卡的调用响应以adaptiveCard/action响应调用。 Teams 客户端将原始 adaptiveCard/action 内容与令牌一起再次发送到机器人。
4 Microsoft Entra ID → Teams 客户端 Microsoft Entra ID 使用自适应卡片将调用响应发送到 Teams 客户端。 机器人使用卡或消息向 Teams 客户端返回非错误响应。

对于机器人中的自适应卡片通用操作,机器人应用会将 OAuth 卡发送到 Teams 客户端。 此卡用于使用 tokenExchangeResource从 Microsoft Entra ID 获取访问令牌。 在应用用户同意后,Teams 客户端使用 tokenExchange将从 Microsoft Entra ID 接收的令牌发送到机器人应用。 然后,机器人应用可以分析令牌以检索应用用户的信息,例如电子邮件地址。

用于启用 SSO 的用例

在 中 Action.Execute,SSO 身份验证可在共享自适应卡片的群聊或频道对话上下文中进行身份验证。

机器人可以使用登录请求来响应 Action.Execute 以下情况:

  • 机器人在一对一聊天、群组聊天或频道中发送的自适应卡片。
  • 应用用户通过消息扩展应用发送的自适应卡片 (机器人在一对一聊天、群组聊天或频道中) 提供支持。
  • 当应用用户撰写消息时,自适应卡片显示在撰写或预览区域中。 在撰写区域中,自适应卡片中的刷新工作正常,机器人可能需要在将卡发送到聊天之前使用令牌向应用用户提供特定于用户的视图。

后续步骤

另请参阅