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

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

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 不同。

后续步骤