将托管标识用于 Azure Spring Apps 中的应用程序

注意

基本、标准和企业计划将从 2025 年 3 月中旬开始弃用,停用期为 3 年。 建议转换到 Azure 容器应用。 有关详细信息,请参阅 Azure Spring Apps 停用公告

标准消耗和专用计划将于 2024 年 9 月 30 日开始弃用,并在六个月后完全关闭。 建议转换到 Azure 容器应用。

本文介绍如何对 Azure Spring Apps 中的应用程序使用系统分配的托管标识和用户分配的托管标识。

Azure 资源的托管标识在 Microsoft Entra ID 中为 Azure 资源(例如 Azure Spring Apps 中的应用程序)提供自动托管标识。 可以使用此标识向支持 Microsoft Entra 身份验证的任何服务进行身份验证,这样就无需在代码中插入凭据了。

功能状态

系统分配 用户分配
GA GA

管理应用程序的托管标识

有关系统分配的托管标识,请参阅如何启用和禁用系统分配的托管标识

有关用户分配的托管标识,请参阅如何分配和删除用户分配的托管标识

获取 Azure 资源的令牌

应用程序可使用其托管标识获取令牌,来访问其他受 Microsoft Entra ID 保护的资源(例如 Azure Key Vault)。 这些令牌代表访问资源的应用程序,而不是应用程序的任何特定用户。

可以将目标资源配置为允许从应用程序进行访问。 有关详细信息,请参阅向 Azure 资源或其他资源分配托管标识访问权限。 例如,如果请求用于访问 Key Vault 的令牌,请确保已添加包含应用程序标识的访问策略。 否则,对 Key Vault 的调用将被拒绝,即使其中包含令牌。 若详细了解支持 Microsoft Entra 令牌的资源,请参阅支持 Microsoft Entra 身份验证的 Azure 服务

Azure Spring Apps 与 Azure 虚拟机使用同一终结点来获取令牌。 建议使用 Java SDK 或 Spring Boot Starter 获取令牌。 有关处理令牌过期和 HTTP 错误等重要主题的各种代码和脚本示例以及指南,请参阅如何使用 Azure VM 上的 Azure 资源的托管标识来获取访问令牌

在应用程序代码中连接 Azure 服务的示例

下表提供了包含示例的文章的链接:

Azure 服务 教程
Key Vault 教程:使用托管标识将密钥保管库连接到 Azure Spring Apps 应用
Azure Functions 教程:使用托管标识从 Azure Spring Apps 应用调用 Azure Functions
Azure SQL 使用托管标识将 Azure SQL 数据库连接到 Azure Spring Apps 应用

使用托管标识时的最佳做法

强烈建议单独使用系统分配的托管标识和用户分配的托管标识,除非你有有效的用例。 如果同时使用这两种托管标识,则应用程序使用系统分配的托管标识且应用程序获取令牌而不指定该标识的客户端 ID 时,可能会发生故障。 在将一个或多个用户分配的托管标识分配给该应用程序后,此方案可能无法正常工作,此时应用程序可能无法获取正确的令牌。

限制

每个应用程序的用户分配的托管标识的最大数量

有关每个应用程序的用户分配的托管标识的最大数量,请参阅 Azure Spring Apps 的配额和服务计划


概念映射

下表显示了托管标识范围和 Microsoft Entra 范围中概念之间的对应关系:

托管标识范围 Microsoft Entra 范围
主体 ID 对象 ID
客户端 ID 应用程序 ID

后续步骤