你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 Microsoft Entra ID 配置 Durable Functions

Microsoft Entra ID (Microsoft Entra ID) 是基于云的标识和访问管理服务。 基于标识的连接允许 Durable Functions 对受 Microsoft Entra 保护的资源(如 Azure 存储帐户)发出经授权的请求,无需用户手动管理机密。 使用默认的 Azure 存储提供程序,Durable Functions 需要针对 Azure 存储帐户进行身份验证。 本文介绍如何配置 Durable Functions 应用以利用两种类型的基于标识的连接:托管标识凭据和客户端机密凭据。

借助托管标识,应用可以轻松访问其他受 Microsoft Entra 保护的资源(如 Azure Key Vault)。 Durable Functions 扩展 2.7.0 及更高版本支持托管标识。

注意

严格说来,托管标识仅适用于在 Azure 上执行的应用。 当配置为使用基于标识的连接时,本地执行的应用将利用开发人员凭据通过 Azure 资源进行身份验证。 然后,在 Azure 上部署时,它将改为利用托管标识配置。

先决条件

以下步骤假定你从现有的 Durable Functions 应用开始,并且熟悉如何操作它。 具体而言,本快速入门假定你已经:

  • 在 Azure 门户中创建 Durable Functions 项目或将本地 Durable Functions 部署到 Azure。

如果未完成这些项,我们建议你从以下文章开始,其中提供了有关如何实现上述所有要求的详细说明:

启用托管标识

函数只需要一个标识,即系统分配的托管标识或用户分配的托管标识。 若要为函数启用托管标识并详细了解这两种标识之间的差异,请阅读此处的详细说明。

将基于角色的访问控制 (RBAC) 分配给托管标识

在 Azure 门户上导航到应用的存储资源。 按照这些说明将以下角色分配给托管标识资源。

  • 存储队列数据参与者
  • 存储 Blob 数据参与者
  • 存储表数据参与者

在 Azure 门户中添加托管标识配置

导航到 Azure 函数应用的“配置”页并执行以下更改:

  1. 删除默认值“AzureWebJobsStorage”。

Screenshot of default storage setting.

  1. 通过添加以下值设置之一来链接 Azure 存储帐户:

    • AzureWebJobsStorage__accountName:例如 mystorageaccount123

    • AzureWebJobsStorage__blobServiceUri:示例:https://mystorageaccount123.blob.core.windows.net/

      AzureWebJobsStorage__queueServiceUri:示例:https://mystorageaccount123.queue.core.windows.net/

      AzureWebJobsStorage__tableServiceUri:示例:https://mystorageaccount123.table.core.windows.net/

      注意

      如果使用 Azure 政府或任何其他独立于全球 Azure 的云,则需要使用第二个选项来提供特定的服务 URL。 这些设置的值可以在“终结点”选项卡下的存储帐户中找到。若要详细了解如何将 Azure 存储与 Azure 政府配合使用,请参阅在 Azure 政府上使用存储 API 进行开发文档。

    Screenshot of endpoint sample.

  2. 完成托管标识配置:

    • 如果应使用系统分配的标识,则不指定其他内容。

    • 如果应使用用户分配的标识,请在应用配置中添加以下应用设置值:

      • AzureWebJobsStorage__credential:managedidentity

      • AzureWebJobsStorage__clientId:(这是从 Microsoft Entra 管理中心获取的 GUID 值)

      Screenshot of user identity client id.

将应用配置为使用客户端机密凭据

在 Microsoft Entra ID 中注册客户端应用程序是配置对 Azure 服务的访问权限的另一种方式。 在以下步骤中,你将了解如何使用客户端机密凭据对 Azure 存储帐户进行身份验证。 此方法可供函数应用在本地和 Azure 上使用。 但是,不太建议使用客户端机密凭据(与托管标识相比),因为它的配置和管理更加复杂,并且需要与 Azure Functions 服务共享机密凭据。

先决条件

以下步骤假定你从现有的 Durable Functions 应用开始,并且熟悉如何操作它。 具体而言,本快速入门假定你已经:

  • 在本地计算机上或 Azure 门户中创建了 Durable Functions 项目。

在 Microsoft Entra ID 上注册客户端应用程序

  1. 根据这些说明,在 Azure 门户中的 Microsoft Entra ID 下注册客户端应用程序。

  2. 为客户端应用程序创建客户端机密。 在注册的应用程序中,请执行以下操作:

    1. 依次选择“证书和机密”、“新建客户端密码”。

    2. 填写“说明”,并在“到期时间”字段中选择机密有效时间。

    3. 请仔细复制并保存机密值,因为它在你离开页面后不会再次显示。

    Screenshot of client secret page.

将基于角色的访问控制 (RBAC) 分配给客户端应用程序

通过以下步骤将这三个角色分配给客户端应用程序。

  • 存储队列数据参与者
  • 存储 Blob 数据参与者
  • 存储表数据参与者
  1. 导航到函数的存储帐户“访问控制(IAM)”页,添加新的角色分配。

    Screenshot of access control page.

  2. 选择所需的角色,单击“下一步”,然后搜索应用程序,并在查看后添加它。

    Screenshot of role assignment page.

添加客户端机密配置

若要在 Azure 中运行和测试,请在 Azure 门户的 Azure 函数应用的“配置”页中指定以下内容。 若要在本地运行和测试,请在函数的 local.settings.json 文件中指定以下内容。

  1. 删除默认值“AzureWebJobsStorage”。

  2. 通过添加以下值设置之一来链接 Azure 存储帐户:

    • AzureWebJobsStorage__accountName:例如 mystorageaccount123

    • AzureWebJobsStorage__blobServiceUri:示例:https://mystorageaccount123.blob.core.windows.net/

      AzureWebJobsStorage__queueServiceUri:示例:https://mystorageaccount123.queue.core.windows.net/

      AzureWebJobsStorage__tableServiceUri:示例:https://mystorageaccount123.table.core.windows.net/

    可以在存储帐户的“终结点”选项卡下找到这些 URI 变量的值。

    Screenshot of endpoint sample.

  3. 通过指定以下值添加客户端机密凭据:

    • AzureWebJobsStorage__clientId:(这是在 Microsoft Entra 应用程序页中找到的 GUID 值)

    • AzureWebJobsStorage__ClientSecret:(这是上一步中 Microsoft Entra 管理中心生成的机密值)

    • AzureWebJobsStorage__tenantId:(这是 Microsoft Entra 应用程序注册的租户 ID)

    可以在客户端应用程序的概述页上找到客户端 ID 和租户 ID 值。 客户端机密值是在上一步仔细保存的值。 刷新页面后它将不可用。

    Screenshot of application's overview page.