单租户和多租户应用的标识和帐户类型

本文介绍开发者如何选择其应用是否仅允许来自 Microsoft Entra 租户、任何 Microsoft Entra 租户或具有个人 Microsoft 帐户的用户。 可以在 Microsoft Entra 中的应用注册期间将应用配置为单租户或多租户。 确保最低特权访问的 零信任 原则,以便应用仅请求所需的权限。

Microsoft标识平台为特定 标识类型提供支持:

  • 当实体在 Microsoft Entra ID 中有帐户时的工作或学校帐户。
  • 在 Outlook.com、Hotmail、Live、Skype、Xbox 等拥有帐户的任何人的 Microsoft 个人帐户 (MSA)
  • Microsoft Entra ID 中适用于合作伙伴(组织外部的用户)的外部标识

在 Microsoft Entra ID 中注册应用程序的必需部分是选择受支持的帐户类型。 当管理员角色中的 IT 专业人员决定谁可以同意其租户中的应用时,你作为开发人员指定谁可以根据帐户类型使用你的应用。 当租户不允许你在 Microsoft Entra ID 中注册应用程序时,管理员会为你提供一种方法,以便通过另一种机制将这些详细信息传达给他们。

注册应用程序时,可以选择以下受支持的帐户类型选项。

  • Accounts in this organizational directory only (O365 only - Single tenant)
  • Accounts in any organizational directory (Any Azure AD directory - Multitenant)
  • Accounts in any organizational directory (Any Azure AD directory - Multitenant) and personal Microsoft accounts (e.g. Skype, Xbox)
  • Personal Microsoft accounts only

仅限此组织目录中的帐户 - 单租户

选择仅此组织目录中的帐户(仅 O365 - 单租户)时,允许的用户和来宾仅能来自特定的租户,即开发者用于注册其应用的租户。 此选项是业务线 (LOB) 应用程序最常见的选项。

仅限任何组织目录中的帐户 - 多租户

选择 任何组织目录中的帐户(任何Microsoft Entra 目录 - 多租户)时,允许来自任何Microsoft Entra 目录的任何用户登录到多租户应用程序。 如果只想允许来自特定租户的用户,可以通过检查 id_token中的 tid 声明 是否位于允许的租户列表中来筛选这些用户。 应用程序可以使用组织终结点或常用终结点在用户的主租户中登录用户。 若要支持登录到多租户应用的来宾用户,请使用特定租户终结点让租户(其中用户是来宾)的用户登录。

任何机构帐户中的帐户和个人 Microsoft 帐户

选择任何机构帐户中的帐户和个人 Microsoft 帐户(任何 Microsoft Entra 目录 - 多租户)和个人 Microsoft 帐户(例如 Skype、Xbox)时,允许用户从任何 Microsoft Entra 租户或使用者帐户使用其本机标识登录到应用程序。 如前所述,与多租户应用一样,这些应用也能用同样的方法使用租户筛选和终结点。

仅 Microsoft 个人帐户

仅选择个人Microsoft帐户时,仅允许具有使用者帐户的用户使用你的应用。

这不仅仅由开发人员决定

虽然在应用程序注册中定义谁可以登录到你的应用,但最终决定来自用户主租户的单个用户或管理员。 租户管理员通常希望对应用的控制更深入,而不仅仅是控制谁可以登录。 例如,他们可能想要将条件访问策略用在应用上,或控制允许使用该应用的组。 为使租户管理员能够拥有此控制,Microsoft 标识平台中提供了第二个对象:企业应用。 企业应用也称为 服务主体

在其他租户或其他使用者帐户中拥有用户的应用

支持的帐户类型包括适用于多租户应用程序的任何组织目录中的帐户选项,从而允许组织目录用户使用。 换句话说,允许用户从任何 Microsoft Entra ID 使用其本机标识登录到应用程序。 当租户中的第一个用户向应用进行身份验证时,自动在租户中创建服务主体。

只有一个应用程序注册或应用程序对象。 但是,每个租户中都有一个企业应用或服务主体 (SP) 允许用户登录到应用。 租户管理员可以控制应用在其租户中的工作方式。

多租户应用注意事项

当应用使用常用终结点或组织终结点时,多租户应用会从用户的主租户登录用户。 此应用有一个应用注册,如下图所示。 在此例中,应用程序在 Adatum 租户中注册。 来自 Adatum 的用户 A 和来自 Contoso 的用户 B 都可以登录到此应用,预期情况是 Adatum 的用户 A 访问 Adatum 数据,而 Contoso 的用户 B 访问 Contoso 数据。

关系图显示了当应用使用常用终结点或组织终结点时,多租户应用如何从用户的主租户登录用户。

作为开发人员,你有责任分隔租户信息。 例如,如果 Contoso 数据来自 Microsoft Graph,则 Contoso 的用户 B 仅看到 Contoso 的 Microsoft Graph 数据。 来自 Contoso 的用户 B 不可能访问 Adatum 租户中的 Microsoft Graph 数据,因为 Microsoft 365 实现了真正的数据分离。

在关系图中,来自 Contoso 的用户 B 可以登录到应用程序,并且可以访问应用程序中的 Contoso 数据。 应用程序可以使用通用的(或组织)终结点,以便用户以本机的方式登录到其租户,无需经过邀请过程。 在用户或租户管理员授予同意后,用户可以运行并登录到应用程序。

后续步骤