在Microsoft Entra ID上生成应用程序时,首先为应用程序建立标识。 应用需要Microsoft Entra ID中的标识来请求令牌。 应用程序编程接口(API)需要Microsoft Entra ID中的标识才能为应用颁发令牌来访问资源。
本文介绍如何在 Microsoft Entra 管理中心或Microsoft Graph API中注册Microsoft Entra ID租户中的应用。 这是独立软件开发人员(ISV)如何针对Microsoft Entra ID生成和优化其应用程序的系列文章中的第二篇文章。 在此系列中,可以了解有关以下主题的详细信息:
- Microsoft Entra ID面向独立软件开发人员介绍如何使用此基于云的标识和访问管理服务,使员工能够使用应用程序访问资源。
- 验证应用程序和用户介绍了应用程序如何使用 Microsoft Entra ID 对用户和应用程序进行身份验证。
- 授权应用程序、资源和工作负载演示了当个人与应用程序进行交互和指示应用程序时、API 为用户执行操作时以及应用程序或服务独立工作时的场景。
- 自定义令牌可帮助你使用 ID 令牌和访问令牌从 Microsoft Entra ID 在应用程序中构建安全性。 其中介绍了可以在Microsoft Entra ID令牌中接收的信息,以及如何对其进行自定义。
注册应用程序
开发人员可以将应用程序注册为多租户应用和单租户应用。 对于ISV,我们建议使用多租户应用。 多租户应用具有 ISV 在其租户中完全控制并注册的单个应用注册。 了解如何创建 Microsoft Entra ID 租户来注册你的应用。
若要为运行 Microsoft Entra ID 的任何客户提供解决方案,并具有加入客户 Microsoft Entra ID 租户的无缝体验,请转到 Microsoft Entra 管理中心、App registrations,注册一个应用程序。 在新的应用程序注册页面中,选择支持的账户类型、任一组织目录中的帐户(任何 Microsoft Entra ID 租户(多租户))。
将多租户应用加入到外部租户可以像运行一个应用并让用户登录该应用一样简单。 当租户允许用户同意(用户可以在没有管理员事先批准应用的情况下登录应用)时,加入某个应用只需要用户登录到该应用即可。 这一面向开发人员的标识研讨会(时间代码 1:05:20 到 1:08:00)展示了当用户登录应用时,一个应用程序如何被加入到租户中。
在Microsoft Entra ID租户中注册应用时,它会收到一个应用程序 ID(应用 ID),该 ID 也称为应用的客户端 ID。 它就像一个用户的userid,用于唯一标识一个应用程序。 应用 ID 在Microsoft Entra ID云中全局唯一且不可变。 应用与Microsoft Entra ID之间的所有交互都包含应用 ID。
除了应用 ID,应用注册还包含应用开发人员知道或需要知道的应用相关信息。 例如,应用开发人员需要知道应用 ID 才能与Microsoft Entra ID进行交互。 开发人员知道他们正在生成的应用程序类型(Web 应用、本机应用、单页应用、移动应用或桌面应用)。 应用程序类型具有必需的属性。
例如,重定向统一资源标识符 (URI) 便是一个必需的应用程序属性。 该属性告知 Microsoft Entra ID 在身份验证或授权后,将 Web 地址或本机应用地址发送给用户。 开发人员将根据应用类型和应用运行位置获知应用程序的重定向 URI。
应用的清单(可通过 Microsoft Entra 管理中心或通过 Microsoft Graph API 访问)存储许多应用程序属性。 参考 了解Microsoft Entra应用清单以了解应用属性及其允许的值。
请参考用于 Microsoft 标识平台身份验证和授权的代码示例,了解有关要开发的应用的建议设置。 查找与要生成的应用类似的应用程序示例并阅读其文档。 示例将按应用类型详细说明所需的应用注册设置。 例如,如果要在 Node.js中生成 API,则可以找到导致这些注册说明的示例。
应用注册会传达开发人员所知道的内容。 在用户可以向多租户应用进行身份验证的每个租户中,租户管理员将配置应用程序在其租户中的运行方式。 例如,租户管理员可以设置条件访问策略来将应用限制到特定的网络位置。 此外,还可以通过条件访问策略要求用户通过多方式认证 (MFA) 来访问应用,或通过应用设置来允许特定用户或组使用应用。
若要启用此类限制,租户管理员需掌握对其租户中的应用的控制点。 Microsoft Entra ID会在用户对应用进行身份验证的每个租户中自动创建企业应用程序。 在Microsoft Entra管理中心中,它们称为 Enterprise Applications,但对象是服务主体。 了解有关 Microsoft Entra ID 中的应用程序和服务主体 的详细信息。
用户对应用进行身份验证后,Microsoft Entra ID在用户进行身份验证的租户中创建服务主体。 租户管理员可以使用 Microsoft Graph(或 Microsoft Entra 管理中心、Enterprise Applications) 中的服务主体对象来配置应用在租户中的工作方式。
服务主体不是应用注册的副本,即使它们具有许多相同的属性。 相反,服务主体会链接到其应用注册。 你可以在链接的企业应用程序中查看对应用注册的更新。 对于多租户应用,客户无权访问 ISV 租户中的应用注册。 但是,即使该服务主体位于其他租户中,应用程序也可以使用Microsoft Graph访问其服务主体。 因此,应用可以访问有关企业应用程序的属性(例如,它是需要将用户分配给某个应用,还是将用户分配给该应用中的某个角色)。
虽然我们建议 ISV 在应用注册中选择多租户应用,但单租户应用也是一个用于注册应用的选择。 你可以要求客户在其租户中注册你的应用,而不是在 ISV 完全控制注册的 ISV 租户中进行单应用注册。 客户在完成注册后,会使用其应用注册的详细信息配置应用实例。 我们建议将这种单租户应用方法主要用于为特定企业开发的业务线应用程序。
由于要求客户注册和配置你的应用程序所产生的开销,我们不建议 ISV 选择单租户应用。 然而,对于某些场景,多租户应用对你的应用来说并不可行。
如果应用使用安全断言标记语言 2.0 (SAML),而不是 OpenID Connect (OIDC) 或 OAuth 2.0,则将遵循单租户应用注册模型。 对于 SAML 应用,创建服务主体和应用注册的顺序与 OIDC 或 OAuth 2.0 应用相反,至少对于将 SAML 应用添加到租户的管理员而言是如此。 管理员首先创建企业应用,而不是注册应用并让Microsoft Entra ID自动创建服务主体。 Microsoft Entra ID自动创建应用注册。 Microsoft Entra ID应用库,如应用程序发布部分中所述,简化了管理员创建 SAML 应用程序的过程。
重定向统一资源标识符 (URI) 的限制可能会阻止 ISV 创建多租户应用。 应用最多可以有 256 个重定向 URI,且不带通配符。 如果应用程序需要每个客户都有一个唯一的重定向 URI,并且有超过 256 个客户需要唯一实例,则可能无法创建多租户应用。 出于安全原因,无法在Microsoft Entra ID重定向 URI 中使用通配符 \ 。 一个选项是采用一个针对中心服务的重定向 URI(如果可以提供中心服务)。 中央重定向 URI 将会验证令牌,然后将用户重定向到客户特定的终结点。
发布应用程序
当用户初次对你的应用进行身份验证或授权应用访问该用户的资源时,他们将决定是否信任你的应用。 管理员可以为租户中的所有用户做出类似的决策。 管理员可以决定用户是否可登录某个应用,以及应用是否可访问特定资源。
以下应用发布方法可帮助 ISV 将其应用呈现为值得用户和管理员信任的应用。
- 从经过验证的域发布应用。 发布者域会通知用户和管理员哪些位置将接收其信息。 从经过验证的发布者域进行发布表明应用的已注册租户对列为应用发布者的域具有控制权。
- 使用发布者验证发布应用程序。 拥有经过验证的发布者域是实现发布者验证的先决条件,后者不再是仅仅表明应用发布者对域具有控制权。 发布者验证表明 Microsoft 已验证域和租户背后的实体是真实的。 非管理员用户通常不会信任未经验证的发布者提供的多租户应用。 管理员可以配置租户,使并非来自已验证发布者的应用始终需要征求管理员同意。 发布者验证主要适用于在 OAuth 2.0 和 OIDC 上生成多租户应用的 ISV。 经验证的发布者是 Microsoft 云合作伙伴计划的成员。 发布者验证不会影响单租户应用,例如使用 SAML 的单租户应用或业务线应用。
- 参与 Microsoft 365 应用合规性计划。 使用已验证的域名表明您对自己的域名具有控制权。 发布者验证表明 Microsoft 已验证组织的真实性。 将你的应用列入 Microsoft Entra ID 应用库,可以显示你的应用与 Microsoft Entra ID 兼容,并且提供便捷的注册或接入。 Microsoft 365合规性计划允许通过 Publisher 证明、Microsoft 365认证或 App 合规性自动化工具(ACAT) Azure向客户通报应用的安全性和合规性。 它展示了您的应用程序如何保护客户授权您的应用访问的资源。
后续步骤
- Microsoft Entra ID面向独立软件开发人员介绍如何使用此基于云的标识和访问管理服务,使员工能够使用应用程序访问资源。
- 应用程序和用户身份验证介绍了应用程序如何使用 Microsoft Entra ID 对用户和应用程序进行身份验证。
- 授权应用程序、资源和工作负载讨论当个人与应用程序交互并指导应用程序时、API 代表用户运行时以及应用程序或服务独立运行时的授权。
- 自定义令牌可帮助你使用 ID 令牌和访问令牌从 Microsoft Entra ID 在应用程序中构建安全性。 其中介绍了可以在Microsoft Entra ID令牌中接收的信息,以及如何对其进行自定义。