如何为JMeter配置MS CRM身份认证解决脚本报错
BlazeMeter 运行MS CRM测试脚本身份认证错误配置方案
核心配置逻辑
MS CRM(含Dynamics 365在线版、本地AD FS部署版)的登录流程带多轮动态令牌校验,BlazeMeter录制生成的脚本默认会硬编码录制时拿到的临时令牌,是触发认证错误的核心原因,按以下步骤配置即可:
- 第一步先禁用BlazeMeter脚本的自动参数硬编码逻辑,给3个核心动态参数配置正则/JSON提取器,从上一跳的响应内容中实时抓取,不要用录制时的固定值:
- 登录页响应体中的
__RequestVerificationToken - 组织发现接口返回的
crmorgid - 认证跳转链路中生成的临时
msauth参数
- 登录页响应体中的
- 针对Dynamics 365在线版(Azure AD OAuth认证):
- 不要直接使用BlazeMeter内置的通用OAuth2.0配置组件,按实际请求链路顺序编排接口
- 首先请求
https://<你的CRM实例域名>/api/data/v9.x/WhoAmI接口,拿到AAD认证跳转地址 - 提交账号密码时,必须携带和跳转上下文完全匹配的
Origin、Referer请求头,缺失这两个头会直接被微软身份防护策略拦截 - 提取认证成功后响应头
Set-Cookie中的ReqClientId、MSISAuth字段,设置为对应域名下的全局Cookie变量,后续所有业务接口请求都要自动携带这两个Cookie值
- 针对本地部署AD FS认证场景:
关闭BlazeMeter默认的自动跟随302重定向配置,手动处理每一步跳转逻辑——AD FS会在302跳转过程中多次更新认证令牌,自动跟随时脚本会跳过令牌提取步骤,直接导致后续请求认证失效。
配置完成后可直接调用WhoAmI接口做校验:如果接口正常返回当前账号对应的
systemuserid,就说明整个认证链路配置正确,无需额外调整。
常见报错快速排查
- 返回401 Unauthorized:优先检查
__RequestVerificationToken的提取规则是否正确,有没有把HTML转义后的特殊字符直接作为参数提交 - 返回AADSTS50058会话缺失错误:检查请求携带的
Referer头是否和当前上下文匹配,有没有漏带上一跳生成的会话Cookie - 返回403 Forbidden:先确认测试账号对目标CRM组织有对应访问权限,再检查请求携带的
crmorgid是否和当前访问的组织ID完全一致
内容的提问来源于stack exchange,提问作者Bhaumik
相关产品推荐
相关产品推荐

