为应用启用 SSO
借助 Teams 中的单一登录 (SSO) ,应用用户可以使用 Teams 访问机器人或消息扩展应用。 使用 Microsoft 或 Microsoft 365 帐户登录 Teams 后,应用用户可以使用你的应用,而无需再次登录。 你的应用可供任何设备上通过 entra ID 授予访问权限的应用用户使用Microsoft。
注意
Teams 中机器人应用的 SSO 仅在一对一聊天中受支持。
本部分介绍机器人和消息传递扩展应用所需的 SSO 配置。
Teams 中的 SSO 用户体验
应用用户使用个人 Microsoft 帐户或 Microsoft 365 帐户登录 Teams。 可以利用这一点,并使用 SSO 对应用用户进行身份验证和授权。 Microsoft Entra ID 为应用用户提供对机器人或消息扩展应用的访问权限。
- Teams 对其应用用户的身份进行身份验证并存储。
- 机器人使用已由 Teams 验证的应用用户的存储标识。
- 应用用户需要同意 Teams 使用标识来访问机器人。
- 应用用户可以在 Web、桌面或移动客户端上访问应用。
注意
应用用户无法授予某些权限范围的权限,例如 Sites.ReadWrite.All
,允许应用用户读取和写入租户中的所有 SharePoint 和 OneDrive 资产。 对于此类范围,只有租户管理员可以代表应用用户授予许可。
现在,让我们看看在运行时后端发生的情况,以在 Teams 中实现 SSO 体验。
运行时 Teams 中的 SSO
通过获取已登录的 Teams 应用用户的访问令牌,在机器人或消息扩展应用中实现 SSO。 此过程涉及机器人应用客户端和服务器、Teams 客户端、Bot Framework 和 Microsoft Entra ID。 在此交互期间,应用用户必须同意在多租户环境中获取访问令牌。
下图显示了当 Teams 应用用户尝试访问机器人或消息扩展应用时 SSO 的工作原理:
# | 交互 | 这是怎么回事 |
---|---|---|
1 | Teams 客户端→机器人服务 | 应用用户发送的消息由 Teams 客户端接收,后者将其发送到机器人。 如果应用用户以前已登录,则会将令牌保存在 Bot Framework 令牌存储中。 机器人调用 Bot Framework 令牌服务,该服务在 Bot Framework 令牌存储中检查应用用户的现有令牌。 • 如果令牌存在,则向应用用户授予访问权限。 • 如果没有可用的令牌,机器人将触发身份验证流。 |
2 | 机器人服务→ Bot Framework 令牌服务 | 机器人调用 Bot Framework 令牌服务以获取用户的登录链接。 |
3 | Bot Framework 令牌服务→ Teams 客户端 | • 对于机器人应用:Bot Framework 令牌服务将登录请求链接发送到机器人服务,后者将其转发到 OAuth 卡中的 Teams 客户端。 • 对于消息扩展应用:Bot Framework 令牌服务发送调用请求,而不是 OAuth 卡。 |
4 | Teams 客户端→机器人服务→ Bot Framework 令牌服务→ Microsoft Entra ID | Teams 客户端收到应用用户的 OAuth 卡后,如果启用了 SSO,它将应用用户的令牌交换请求发送回机器人。 机器人调用 Bot Framework 令牌服务,尝试从 entra ID Microsoft交换收到的令牌。 |
5 | Microsoft Entra ID → Teams 客户端 | 对于首次使用机器人服务的应用用户,只有在应用用户同意后才能进行令牌交换。 Teams 客户端向应用用户显示一条消息,表示同意。 如果同意失败: 1. 身份验证回退到登录提示,应用用户必须登录才能使用机器人应用。 Teams 客户端中会弹出登录按钮,当应用用户选择它时,将显示Microsoft Entra 登录页。 2. 应用用户登录并授予对机器人服务的访问权限。 |
6 | 机器人服务→ Bot Framework 令牌服务 | 应用用户的令牌存储在 Bot Framework 令牌存储中。 |
对于机器人或消息扩展应用,机器人应用会将 OAuth 卡发送到 Teams 客户端。 此卡用于使用 tokenExchangeResource
从 Microsoft Entra ID 获取访问令牌。 在应用用户同意后,Teams 客户端使用 tokenExchange
将从 Microsoft Entra ID 接收的令牌发送到机器人应用。 然后,机器人应用可以分析令牌以检索应用用户的信息,例如电子邮件地址。
重要
机器人或消息扩展应用可以有多个活动终结点。 应用用户首次收到所有活动终结点的同意请求。
为 Teams 应用启用 SSO
机器人和消息扩展应用使用 Bot Framework 来处理与应用用户的通信。
机器人应用:也称为聊天机器人或对话机器人,它是一种为应用用户运行简单重复任务的服务。 机器人可以是较大应用程序的一部分,也可以是独立服务。
消息扩展应用:它是托管的 Web 服务,可从 Teams 客户端中调用。 它利用机器人的消息传送架构来确保安全通信。 需要将 Web 服务注册为机器人,才能为消息扩展应用启用 SSO。
本部分介绍为 Teams 机器人或消息扩展应用实现 SSO 所涉及的任务。 若要为 Teams 机器人或消息扩展应用启用 SSO,请执行以下操作:
使用 Microsoft Entra ID 配置应用:创建Microsoft Entra 应用以生成应用 ID 和应用程序 ID URI。 若要生成访问令牌,请配置范围并授权受信任的客户端应用程序。 在机器人和消息扩展应用中启用 SSO 时,Microsoft Entra ID 中所需的配置是相同的。 创建机器人资源并配置其客户端密码、消息终结点和 OAuth 连接以启用 SSO。
添加代码:添加代码以处理访问令牌,以将此令牌发送到授权标头中的应用服务器代码,并在收到访问令牌时验证访问令牌。 在机器人应用中启用 SSO 所需的代码不同于消息扩展应用所需的代码。
注意
本部分允许选择要为其添加用于启用 SSO 的代码的应用。
更新应用清单 (以前称为 Teams 应用清单) :使用Microsoft Entra ID 中生成的应用 ID 和应用程序 ID URI 更新应用清单,以允许 Teams 代表应用请求访问令牌。 对于机器人和消息扩展应用,应用清单文件中所需的更新相同。
配置 Graph 范围和权限:可以通过使用 Microsoft Graph 权限和范围扩展应用,向应用添加更多范围。