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

如何解决TestRail API调用时的身份认证失败问题

问题根因

认证失败核心是手动构造的Basic认证头不符合规范,同时存在3个配置错误:

  • HTTP Basic认证规则要求Basic 后面的凭证内容,必须是登录邮箱:API密钥拼接后的Base64编码结果,直接传入明文字符串会被服务端判定为无效凭证。
  • 额外携带浏览器生成的tr_sessionCookie会干扰API认证逻辑,纯API调用不需要复用浏览器登录态的会话Cookie,携带后反而可能触发会话校验冲突。
  • TestRail云版本(域名格式为xxx.testrail.io)不支持使用账号登录密码做API认证,将API Key替换为登录密码的操作本身就不符合鉴权规则,必然校验失败,必须使用账号个人设置页生成的专属API Key。
正确配置方法

Postman 配置

不要手动编写Authorization请求头,使用Postman自带的认证配置模块避免编码错误:

  1. 接口地址填写正确值:https://my.testrail.io/index.php?/api/v2/get_users
  2. 切换到请求编辑页的Authorization标签,认证类型下拉选择Basic Auth
  3. Username输入框填写你的TestRail登录邮箱,例如myemail@whatever.com
  4. Password输入框填写个人设置页生成的API Key,不要填账号登录密码
  5. 切换到Headers标签,删除所有手动添加的Authorization头、以及Cookie字段里的tr_session内容,Postman会自动生成符合规范的编码后认证头
  6. 直接发起请求即可正常返回结果。

cURL 调用写法

最稳妥的方式是使用cURL自带的-u参数传入凭证,工具会自动完成Base64编码,不需要手动拼头,也不要携带多余Cookie:

curl --location --request GET 'https://my.testrail.io/index.php?/api/v2/get_users' \
-u 'myemail@whatever.com:你的专属APIKey'

如果需要手动构造请求头,先对邮箱:APIKey字符串做Base64编码,再拼接在Basic 后面才是合法格式,示例:

# 假设myemail@whatever.com:apikey 编码后结果为bXllbWFpbEB3aGF0ZXZlci5jb206YXBpa2V5
Authorization: Basic bXllbWFpbEB3aGF0ZXZlci5jb206YXBpa2V5
仍报错的排查清单

按上述步骤配置后如果依然返回认证失败,逐一核对以下项:

  • 确认实例管理员已在TestRail后台开启全局API访问权限,权限未开启时即使凭证完全正确也会返回认证失败
  • 确认使用的API Key是当前请求账号对应生成的,复制时没有带入多余空格、特殊字符
  • 确认当前账号状态正常未被禁用,且拥有get_users接口对应的用户列表访问权限
  • 调用时暂时关闭本地抓包代理、网络代理,部分代理会自动剥离或篡改请求中的Authorization头,导致鉴权信息丢失

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 22:18:23