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

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

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

在 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 提供了 Microsoft Entra 企业对客户 (B2C)

Azure AD B2C 以服务形式提供企业对客户标识。 你可以允许用户仅针对应用提供用户名和密码。 B2C 支持拥有社交标识的客户减少密码。 你可以支持企业客户将 Azure AD B2C 目录联合到客户的 Microsoft Entra ID 或者任何支持安全断言标记语言 (SAML) 或 OpenID Connect 的标识提供者。 与多租户应用不同,你的应用不使用客户用来保护其公司资产的企业目录。 客户无需向应用授予对其公司资源的访问权限即可访问你的服务或功能。

这不仅仅由开发人员决定

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

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

如下图使用两个租户(虚构的组织 Adatum 和 Contoso)的示例所示,支持的帐户类型包括多租户应用程序的“任何组织目录中的账户”选项,以便允许组织目录用户。 换句话说,允许用户从任何 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 数据。 应用程序可以使用通用的(或组织)终结点,以便用户以本机的方式登录到其租户,无需经过邀请过程。 在用户或租户管理员授予同意后,用户可以运行并登录到应用程序。

与外部用户协作

当企业希望使非企业成员的用户能够访问企业的数据时,他们使用 Microsoft Entra 企业到企业 (B2B) 功能。 如下图所示,企业可以邀请用户成为其租户中的来宾用户。 用户接受邀请后,可以访问发出邀请的租户保护的数据。 用户不会在租户中创建单独的凭据。

关系图显示了企业如何邀请来宾用户加入其租户。

来宾用户通过登录到其主租户、个人 Microsoft 帐户或其他标识提供者 (IDP) 帐户进行身份验证。 来宾还可以使用任何电子邮件通过一次性密码进行身份验证。 来宾进行了身份验证后,邀请租户的 Microsoft Entra ID 会提供用于访问邀请租户数据的令牌。

作为开发人员,当应用程序支持来宾用户时,请记住以下注意事项:

  • 登录来宾用户时,必须使用租户特定的终结点。 不能使用常用终结点、组织终结点或使用方终结点。
  • 来宾用户标识与其主租户或其他 IDP 中的用户标识不同。 来宾用户的令牌中的 oid 声明与该用户主租户中同一个人的 oid 不同。

后续步骤