你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Microsoft 365 用户的单租户和多租户身份验证

本文介绍单租户和多租户 Microsoft Entra ID (Microsoft Entra ID) 应用程序的身份验证过程。 在使用 Azure 通信服务提供的通话软件开发工具包 (SDK) 生成 Microsoft 365 用户的通话体验时,可以使用身份验证。 本文中的用例还分解了单个身份验证项目。

案例 1:单租户应用程序的示例

Fabrikam 公司已经构建了一个供内部使用的应用程序。 应用程序的所有用户都有 Microsoft Entra ID。 对 Azure 通信服务的访问由 Azure 基于角色的访问控制 (Azure RBAC) 进行控制

概述 Fabrikam 的 Microsoft 365 用户的呼叫应用程序及其 Azure 通信服务资源的身份验证过程的关系图。

以下序列图详细说明了单租户身份验证。

详细说明 Fabrikam 的 Microsoft 365 用户的身份验证的序列图。客户端应用程序获取单个租户 Microsoft Entra 应用程序的 Azure 通信服务访问令牌。

准备工作:

  • 在首次尝试登录之前,Alice 或其 Microsoft Entra 管理员需要同意使用自定义 Teams 应用程序。 详细了解同意
  • Azure 通信服务资源管理员需要授予 Alice 执行其操作的权限。 详细了解 Azure RBAC 角色分配

步骤:

  1. 使用 Microsoft Entra ID 对 Alice 进行身份验证:使用具有 Microsoft 身份验证库 (MSAL) 的标准 OAuth 流对 Alice 进行身份验证。 如果身份验证成功,客户端应用程序会收到一个值为 A1 的 Microsoft Entra 访问令牌和一个值为 A2 的 Microsoft Entra 用户的对象 ID。 本文稍后将概述令牌。 此快速入门从开发人员的角度探讨了身份验证。
  2. 为 Alice 获取访问令牌:Fabrikam 应用程序使用值为 B 的自定义身份验证项目执行授权逻辑,以确定 Alice 是否有权将 Microsoft Entra 访问令牌交换为 Azure 通信服务访问令牌。 授权成功后,Fabrikam 应用程序使用项目 A1A2A3 执行控制平面逻辑。 Azure 通信服务访问令牌 D 是为 Fabrikam 应用程序中的 Alice 生成的。 此访问令牌可用于 Azure 通信服务中的数据平面操作,例如通话。 A2A3 项目随项目 A1 一起传递进行验证。 验证可确保 Microsoft Entra 令牌已颁发给预期用户。 应用程序将防止攻击者使用向其他应用程序或其他用户发放的 Microsoft Entra 访问令牌。 有关如何获取 A 项目的详细信息,请参阅通过 MSAL 库接收 Microsoft Entra 用户令牌和对象 ID获取应用程序 ID
  3. 呼叫 Bob:Alice 使用 Fabrikam 的应用呼叫 Microsoft 365 用户 Bob。 呼叫通过通话 SDK 使用 Azure 通信服务访问令牌进行。 详细了解如何为 Microsoft 365 用户开发应用程序

项目:

  • 项目 A1
    • 类型:Microsoft Entra 访问令牌
    • 受众:Azure Communication Services,控制平面
    • 来源:Fabrikam 的 Microsoft Entra 租户
    • 权限:https://auth.msft.communication.azure.com/Teams.ManageCallshttps://auth.msft.communication.azure.com/Teams.ManageChats
  • 项目 A2
    • 类型:Microsoft Entra 用户的对象 ID
    • 来源:Fabrikam 的 Microsoft Entra 租户
    • 颁发机构:https://login.microsoftonline.com/<tenant>/
  • 项目 A3
    • 类型:Microsoft Entra 应用程序 ID
    • 来源:Fabrikam 的 Microsoft Entra 租户
  • 项目 B
    • 类型:自定义 Fabrikam 授权项目(由 Microsoft Entra ID 或其他授权服务颁发)
  • 项目 C
  • 项目 D
    • 类型:Azure 通信服务访问令牌
    • 受众:Azure Communication Services,数据平面
    • Azure 通信服务资源 ID:Fabrikam 的 Azure Communication Services Resource ID

案例 2:多租户应用程序的示例

Contoso 公司为外部客户构建了一个应用程序。 此应用程序在 Contoso 自己的基础结构中使用自定义身份验证。 Contoso 使用连接字符串从 Fabrikam 的应用程序检索令牌。

演示 Contoso 应用程序如何使用 Contoso 自己的 Azure 通信服务资源对 Fabrikam 用户进行身份验证的序列图。

以下序列图详细说明了多租户身份验证。

详细描述 Microsoft 365 用户的身份验证和多租户 Microsoft Entra 应用程序的 Azure 通信服务访问令牌的序列图。

准备工作:

  • Alice 或其 Microsoft Entra 管理员需要在首次尝试登录之前同意使用 Contoso 的 Microsoft Entra 应用程序。 详细了解同意

步骤:

  1. 使用 Fabrikam 应用程序对 Alice 进行身份验证:通过 Fabrikam 的应用程序对 Alice 进行身份验证。 使用具有 Microsoft 身份验证库 (MSAL) 的标准 OAuth 流。 请确保使用正确的颁发机构来配置 MSAL。 如果身份验证成功,Contoso 客户端应用程序会收到一个值为 A1 的 Microsoft Entra 访问令牌和一个值为 A2 的 Microsoft Entra 用户的对象 ID。 下面概述了令牌详细信息。 此快速入门从开发人员的角度探讨了身份验证。
  2. 为 Alice 获取访问令牌:Contoso 应用程序使用值为 B 的自定义身份验证项目执行授权逻辑,以确定 Alice 是否有权将 Microsoft Entra 访问令牌交换为 Azure 通信服务访问令牌。 授权成功后,Contoso 应用程序使用项目 A1A2A3 执行控制平面逻辑。 这会在 Contoso 应用程序中为 Alice 生成 Azure 通信服务访问令牌 D。 此访问令牌可用于 Azure 通信服务中的数据平面操作,例如通话。 A2A3 项目随项目 A1 一起传递。 验证可确保 Microsoft Entra 令牌已颁发给预期用户。 应用程序将防止攻击者使用向其他应用程序或其他用户发放的 Microsoft Entra 访问令牌。 有关如何获取 A 项目的详细信息,请参阅通过 MSAL 库接收 Microsoft Entra 用户令牌和对象 ID获取应用程序 ID
  3. 呼叫 Bob:Alice 使用 Fabrikam 的应用程序呼叫 Microsoft 365 用户 Bob。 呼叫通过通话 SDK 使用 Azure 通信服务访问令牌进行。 在本快速入门中详细了解如何为 Microsoft 365 用户开发应用。

项目:

  • 项目 A1
    • 类型:Microsoft Entra 访问令牌
    • 受众:Azure Communication Services,控制平面
    • 来源:Contoso 应用程序注册的 Microsoft Entra 租户
    • 权限:https://auth.msft.communication.azure.com/Teams.ManageCallshttps://auth.msft.communication.azure.com/Teams.ManageChats
  • 项目 A2
    • 类型:Microsoft Entra 用户的对象 ID
    • 来源:Fabrikam 的 Microsoft Entra 租户
    • 颁发机构:https://login.microsoftonline.com/<tenant>/https://login.microsoftonline.com/organizations/(具体取决于你的方案
  • 项目 A3
    • 类型:Microsoft Entra 应用程序 ID
    • 来源:Contoso 应用程序注册的 Microsoft Entra 租户
  • 项目 B
    • 类型:自定义 Contoso 授权项目(由 Microsoft Entra ID 或其他授权服务颁发)
  • 项目 C
  • 项目 D
    • 类型:Azure 通信服务访问令牌
    • 受众:Azure Communication Services,数据平面
    • Azure 通信服务资源 ID:Contoso 的 Azure Communication Services Resource ID

后续步骤

你可能会对下列示例应用感兴趣:

  • 尝试示例应用,其中展示了在移动和桌面应用程序中为 Microsoft 365 用户获取 Azure 通信服务访问令牌的过程。

  • 若要了解如何在单页应用程序中获取 Microsoft 365 用户的 Azure 通信服务访问令牌,请查看 SPA 示例应用

  • 若要详细了解 Azure 通信服务的身份验证服务的服务器实现,请查看出色的身份验证服务示例