方案:用于调用 Web API 的守护程序应用程序

此场景将指导你生成一个调用 Web API 的守护程序应用程序。

概述

应用程序可以获取一个令牌,代表自身(而不是用户)调用 Web API。 此方案适用于守护程序应用程序。 它使用标准 OAuth 2.0 客户端凭据授予。

Daemon apps

守护程序应用用例的一些示例包括:

  • 用于预配或管理用户,或者在目录中执行批处理的 Web 应用程序
  • 执行批处理作业的桌面应用程序(例如 Windows 上的 Windows 服务,或 Linux 上的守护程序进程),或者在后台运行的操作系统服务
  • 需操作目录而非特定用户的 Web API

还有另一种常见情况,即非守护程序应用程序使用客户端凭据,即使它们代表用户执行操作。 出于技术原因,这些应用程序需要以自己的标识访问 Web API 或资源时,就会发生这种情况。 例如,访问 Azure Key Vault 或用于缓存的 Azure SQL 数据库中的机密。

无法将守护程序应用程序部署到常规用户的设备,并且常规用户无法访问守护程序应用程序。 只有有限的一组 IT 管理员可以访问运行守护程序应用程序的设备。 这样一来,恶意行动者就无法从设备流量中访问客户端机密或令牌,也无法代表守护程序应用程序进行操作。 守护程序应用程序方案不会取代设备身份验证。

非守护程序应用程序的示例:

  • 一个移动应用程序,它代表应用程序访问 Web 服务,但不代表用户。
  • 一个 IoT 设备,它代表设备访问 Web 服务,但不代表用户。

获取其自身标识的令牌的应用程序具有以下特点:

  • 鉴于机密客户端应用程序以独立方式访问用户资源,因此需证明其身份。 Microsoft Entra 租户管理员需要向这些相当敏感的应用授予批准。
  • 已将机密(应用程序密码或证书)注册到 Microsoft Entra ID。 该机密是在调用 Microsoft Entra ID 来获取令牌的过程中传入的。

详情

用户无法与守护程序应用程序交互,因为它需要自己的标识。 这类型的应用程序通过使用其应用程序标识,并向 Microsoft Entra ID 提供其应用程序 ID、凭据(密码或证书)和应用程序 ID URI 来请求访问令牌。 在身份验证成功后,守护程序应用程序会从 Microsoft 标识平台收到一个访问令牌(和一个刷新令牌)。 然后,将使用该令牌来调用 Web API(将会根据需要刷新该令牌)。

由于用户无法与守护程序应用程序进行交互,因此无法进行增量许可。 所有必需的 API 权限都需要在注册应用程序时配置。 应用程序的代码只请求静态定义的权限。 这也意味着守护程序应用程序不会支持增量许可。

对于开发人员来说,此方案的端到端体验具有以下特点:

  • 守护程序应用程序只能在 Microsoft Entra 租户中使用。 如果你是业务线 (LOB) 应用开发人员,则需在租户中创建守护程序应用。 如果你是 ISV,你可能希望创建多租户守护程序应用程序, 每个租户管理员都需要提供许可。
  • 注册应用程序期间,回复 URI 不是必需的。 与 Microsoft Entra ID 共享机密/证书或已签名的断言。 你还需要请求应用程序权限,并授予管理员许可才能使用这些应用权限。
  • 应用程序配置需要提供客户端凭据,这些凭据是在应用程序注册期间与 Microsoft Entra ID 共享的。
  • 用于通过客户端凭据流获取令牌的作用域必须是静态作用域。

如果你不熟悉 OAuth 2.0 和 OpenID Connect 的标识和访问管理 (IAM),甚至不熟悉 Microsoft 标识平台上的 IAM,请将下列文章加入你的阅读列表。

虽然在完成第一个快速入门或教程之前不需要阅读这些文章,但是它们涵盖了平台不可或缺的主题,熟悉它们将有助于构建更复杂的方案。

后续步骤

转到此方案中的下一篇文章,应用注册