使用AD认证的JMeter与Azure负载测试:无法读取Key Vault密钥
问题排查:Azure Load Test中JMeter无法读取Key Vault密钥
一、JMeter测试代码问题检查
凭据变量末尾存在多余空格
你的用户定义变量中,__GetSecret函数调用后带有空格:<stringProp name="Argument.value">${__GetSecret(LoadTestUsername)} </stringProp> <stringProp name="Argument.value">${__GetSecret(LoadTestPassword)} </stringProp>这会导致读取的用户名/密码末尾包含空格,直接引发Azure AD认证失败。需要删除变量值末尾的空格,修正为:
<stringProp name="Argument.value">${__GetSecret(LoadTestUsername)}</stringProp> <stringProp name="Argument.value">${__GetSecret(LoadTestPassword)}</stringProp>函数调用格式验证
__GetSecret函数在Azure Load Test环境中无需额外指定Vault名称(只要Load Test已关联目标Key Vault),当前调用格式${__GetSecret(密钥名称)}是正确的,无需添加其他参数。
二、Azure配置问题排查
如果修正代码后仍无法读取密钥,检查以下Azure配置项:
Load Test与Key Vault的关联
登录Azure门户,进入你的Load Test资源,在左侧菜单的机密选项中,确认已添加目标Key Vault,并勾选了LoadTestUsername和LoadTestPassword两个密钥。Key Vault访问策略配置
确保Load Test的托管身份(系统分配或用户分配)被授予Key Vault的密钥/获取权限:- 进入Key Vault资源,打开访问策略页面;
- 添加或编辑现有策略,选择Load Test的托管身份;
- 在“密钥权限”中勾选
获取权限,保存配置。
密钥状态与名称匹配
确认Key Vault中的密钥:- 名称完全匹配
LoadTestUsername和LoadTestPassword(注意大小写敏感); - 密钥状态为已启用,未过期或被禁用。
- 名称完全匹配
Key Vault网络访问控制
如果Key Vault启用了防火墙,需确保允许Load Test访问:- 在Key Vault的网络设置中,选择“允许受信任的Microsoft服务访问此密钥保管库”;
- 或者添加Load Test资源所在的虚拟网络/IP范围到允许列表。
内容的提问来源于stack exchange,提问作者JamesM
相关产品推荐
相关产品推荐

