JMeter无法录制带Basic HTTP Auth及单点登录的企业网站求助
JMeter录制SSO网站请求失败的解决办法
问题还原
需录制某采用单点登录(SSO)的企业网站HTTP请求,该网站平时通过http://<user>:<pass>@website.com格式的Basic HTTP Auth访问。启动JMeter 8888代理后,可正常录制无SSO的企业网站,但录制该SSO网站时:弹出登录窗口,输入正确凭据3-4次后,出现错误提示:
无网络连接
代理服务器出现问题或地址不正确
可能原因
- SSO认证流程与JMeter代理的Basic Auth处理逻辑冲突,浏览器反复弹出登录框是因为代理未正确传递原始认证凭据
- JMeter代理未配置对SSO相关域名的认证转发或绕过规则
具体解决步骤
1. 配置JMeter代理的认证信息
打开JMeter的「HTTP(S) Test Script Recorder」组件:
- 切换到「Requests Filtering」标签页,在「URL Patterns to Include」中添加目标网站域名,示例:
.*website.com.* - 切换到「Advanced」标签页,勾选「Use keep-alive」
- 在「Basic Authentication」区域填入你的
<user>和<pass>,让JMeter代理自动传递认证信息
2. 配置浏览器跳过代理的SSO认证域名
若SSO认证服务器域名与业务域名不同,需让浏览器直接访问认证地址,不走JMeter代理:
- 打开浏览器代理设置,找到「不使用代理的地址」选项
- 添加SSO认证服务器域名,示例:
sso.yourcompany.com(根据实际情况调整)
3. 手动添加SSO认证请求到测试计划
若代理录制仍失败,可通过浏览器抓包手动补全认证请求:
- 按F12打开浏览器开发者工具的「网络」标签,完成一次正常登录
- 找到含
login、auth等关键词的SSO认证请求(POST/GET类型) - 在JMeter中新建HTTP请求,复制该请求的URL、请求方法、参数、Headers(重点是Cookie和Authorization头)
- 将这些请求放在测试计划最前端,确保后续请求能继承认证会话
4. 调整JMeter Cookie管理器设置
- 确保测试计划中已添加「HTTP Cookie管理器」,它会自动保存并传递登录后的会话Cookie
- 若SSO使用自定义Cookie,将Cookie管理器的「Cookie Policy」设置为「standard」或「compatibility」
额外注意事项
- 关闭浏览器自动保存密码功能,避免干扰代理认证流程
- 确认JMeter代理端口(8888)未被其他程序占用
- 测试前清空浏览器缓存和Cookie,避免旧会话影响录制
内容的提问来源于stack exchange,提问作者DevOps QA
相关产品推荐
相关产品推荐

