You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JMeter中处理Azure托管标识API并执行性能测试

在JMeter中处理基于Azure托管标识的API性能测试

要在Azure负载测试资源中用JMeter测试依赖托管标识的API,核心是先获取托管标识的AccessToken,再将其附加到API请求的授权头里,以下是具体步骤:

1. 通过JMeter获取托管标识的AccessToken

直接用JMeter的JSR223 Sampler(选Groovy语言)调用Azure实例元数据服务(IMDS)获取Token——在Azure环境中运行时,IMDS可以直接返回当前资源托管标识的Token,无需额外凭证(如果用的是用户分配的托管标识,需要指定client_id)。

示例Groovy代码:

import groovy.json.JsonSlurper

// 若使用用户分配托管标识,填入对应的Client ID;系统分配则注释掉这行
def clientId = "你的托管标识Client ID"
// 替换为目标API的资源标识符,比如https://management.azure.com/
def resource = "目标API资源ID"

def url = "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=${resource}"
if (clientId) {
    url += "&client_id=${clientId}"
}

def connection = new URL(url).openConnection()
connection.setRequestProperty("Metadata", "true")
connection.connect()

def response = connection.getInputStream().text
def json = new JsonSlurper().parseText(response)
def accessToken = json.access_token

// 将Token存入JMeter变量,供后续请求调用
vars.put("ACCESS_TOKEN", accessToken)
// 可选:存储过期时间,用于后续刷新逻辑
vars.put("EXPIRES_ON", json.expires_on)

本地测试提示:本地无法访问IMDS,可先用Azure CLI执行az account get-access-token --resource "目标API资源ID"获取Token,手动存入JMeter变量临时测试。

2. 给API请求添加授权头

在需要测试的HTTP请求下添加HTTP Header Manager,新增一个头:

  • 名称:Authorization
  • 值:Bearer ${ACCESS_TOKEN}
    这样所有请求都会自动带上获取到的AccessToken。

3. 配置Azure负载测试资源的权限

确保Azure负载测试资源的托管标识(系统分配或用户分配)拥有目标API的访问权限:

  • 找到目标API对应的Azure AD应用注册,添加所需的角色或权限
  • 给负载测试资源的托管标识授予该权限

4. 处理Token过期

AccessToken通常1小时后过期,可在JSR223 Sampler中添加刷新逻辑:

def currentToken = vars.get("ACCESS_TOKEN")
def expiresOn = vars.get("EXPIRES_ON")

// 提前5分钟刷新Token
if (!currentToken || System.currentTimeMillis() > (Long.parseLong(expiresOn) - 300000)) {
    // 重复前面获取Token的代码
    // ...
    vars.put("ACCESS_TOKEN", accessToken)
    vars.put("EXPIRES_ON", json.expires_on)
}

或者添加一个定时器,每隔55分钟重新执行一次Token获取Sampler。

内容的提问来源于stack exchange,提问作者Raxon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 20:56:21