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

使用 Azure 负载测试对受保护的终结点进行负载测试

本文介绍如何将 Azure 负载测试与需要身份验证的应用程序终结点配合使用。 根据应用程序实现的不同,可以使用访问令牌、用户凭据或客户端证书对请求进行身份验证。

Azure 负载测试支持对经过身份验证的终结点使用以下选项:

先决条件

  • 具有活动订阅的 Azure 帐户。 如果没有 Azure 订阅,请在开始之前创建一个免费帐户
  • 一个 Azure 负载测试资源。 若要创建负载测试资源,请参阅创建并运行负载测试

使用共享机密或凭据进行身份验证

在这种情况下,应用程序终结点要求你使用共享机密(例如访问令牌、API 密钥或用户凭据)进行身份验证。

下图显示了如何在负载测试中使用共享机密或凭据向应用程序终结点进行身份验证。

Diagram that shows how to use shared-secret authentication with Azure Load Testing.

使用共享机密或用户凭据进行身份验证的流为:

  1. 安全地存储机密或凭据,例如 Azure 密钥库或 CI/CD 机密存储。
  2. 在负载测试配置中引用机密。
  3. 在 JMeter 脚本中,使用 GetSecret 函数检索机密值,并将机密值传递给应用程序请求。

安全地存储机密

为避免在 JMeter 脚本中存储和泄露安全信息,可以将机密安全地存储在 Azure 密钥保管库或 CI/CD 机密存储中。

可以通过以下两种方式之一在机密存储中添加安全信息:

在负载测试配置中引用机密

在 JMeter 测试脚本中检索机密值之前,必须在负载测试配置中引用机密。

在Azure 门户中,可以引用存储在 Azure 密钥库中的机密。 若要在Azure 门户中添加和配置负载测试机密,

  1. 导航到Azure 门户中的负载测试资源,然后选择“测试以查看负载测试列表。

  2. 从列表中选择测试,然后选择“ 编辑” 以编辑负载测试配置。

    Screenshot that shows how to edit a load test in the Azure portal.

  3. 在“参数”选项卡上,输入机密的详细信息。

    字段
    Name 机密的名称。 向函数提供此名称 GetSecret 以检索 JMeter 脚本中的机密值。
    匹配 Azure 密钥保管库的机密标识符。

    Screenshot that shows how to add secrets to a load test in the Azure portal.

  4. 选择“应用”以保存负载测试配置更改。

检索和使用 JMeter 脚本中的机密值

现在,可以使用自定义函数检索 JMeter 脚本 GetSecret 中的机密值,并将其传递给应用程序请求。 例如,使用 Authorization HTTP 标头将 OAuth 令牌传递给请求。

  1. 创建一个用户定义的变量,该变量使用自定义函数 GetSecret 来检索机密值:

    GetSecret函数提取从 Azure 密钥库 或 CI/CD 机密存储中检索值。

    Screenshot that shows how to add a user-defined variable that uses the GetSecret function in JMeter.

  2. 更新 JMeter 采样器组件以在请求中传递机密。

    例如,若要提供 OAuth2 访问令牌,可以通过添加以下代码HTTP Header Manager来配置 Authorization HTTP 标头:

    Screenshot that shows how to add an authorization header to a request in JMeter.

使用客户端证书进行身份验证

在这种情况下,应用程序终结点要求你使用客户端证书进行身份验证。 Azure 负载测试支持公钥证书标准 #12 (PKCS12) 类型的证书。 在负载测试中只能使用一个客户端证书。

下图显示了如何在负载测试中使用客户端证书对应用程序终结点进行身份验证。

Diagram that shows how to use client-certificate authentication with Azure Load Testing.

使用客户端证书进行身份验证的流为:

  1. 安全地将客户端证书存储在 Azure 密钥库。
  2. 引用负载测试配置中的证书。
  3. Azure 负载测试以透明方式将证书传递给 JMeter 中的所有应用程序请求。

将客户端证书存储在 Azure 密钥库

为避免与 JMeter 脚本一起存储和披露客户端证书,请将证书存储在 Azure 密钥保管库中。

按照导入证书中的步骤将证书存储在 Azure 密钥保管库中。

重要

Azure 负载测试仅支持 PKCS12 证书。 以 PFX 文件格式上传客户端证书。

授予对 Azure Key Vault 的访问权限

在 Azure 密钥库中存储负载测试机密或证书时,负载测试资源使用托管标识来访问密钥保管库。 配置管理标识后,需要向负载测试资源的托管标识授予从密钥保管库读取这些值的权限。

若要授予 Azure 负载测试资源从 Azure 密钥保管库读取机密或证书的权限,请执行以下操作:

  1. Azure 门户中,转到你的 Azure 密钥保管库资源。

    如果你没有密钥保管库,请按照 Azure 密钥保管库快速入门中的说明创建一个。

  2. 在左窗格中,选择“访问策略,然后选择“+ 创建”。

  3. “权限”选项卡上的“机密权限”下,选择“获取,然后选择“下一步”。

    注意

    Azure 负载测试将证书检索为 机密 ,以确保证书的私钥可用。

  4. “主体 ”选项卡上,搜索并选择负载测试资源的托管标识,然后选择“ 下一步”。

    如果使用系统分配的托管标识,则托管标识名称与 Azure 负载测试资源的名称匹配。

  5. 再次选择“下一步”。

    测试运行时,与负载测试资源关联的托管标识现在可以从密钥保管库读取负载测试的机密或证书。

在负载测试配置中引用证书

若要将客户端证书传递给应用程序请求,需要在负载测试配置中引用证书。

要将客户端证书添加到 Azure 门户中的负载测试:

  1. 导航到 Azure 门户中的负载测试资源。 如果你还没有负载测试,请使用 JMeter 脚本创建一个新的负载测试

  2. 在左侧窗格中,选择“测试”以查看负载测试列表

  3. 从列表中选择你的测试,然后选择“编辑”以编辑负载测试配置。

    Screenshot that shows how to edit a load test in the Azure portal.

  4. 在“参数”选项卡上,输入证书的详细信息。

    字段
    Name 证书的名称。
    匹配证书的 Azure 密钥保管库机密标识符。

    Screenshot that shows how to add a certificate to a load test in the Azure portal.

  5. 选择“应用”以保存负载测试配置更改。

运行负载测试时,Azure 负载测试会从 Azure 密钥库检索客户端证书,并在每个 JMeter Web 请求中自动注入该证书。