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

PowerShell调用Zendesk API授权失败及成功实现后的原因疑问

Zendesk API 认证失败原因分析

我尝试调用Zendesk的List Target Failures接口(GET /api/v2/target_failures)查询目标失败记录,原脚本认证失败,改用从Azure Key Vault获取凭证的脚本后成功。以下是两者的核心差异及失败原因:

1. 变量初始化问题(核心原因)

原脚本中仅写出$username和$password变量,但未进行赋值:

$username
$password

这两行只是输出变量(若未提前赋值,变量值为空),导致后续拼接的认证字符串为::,Base64编码后生成的认证头完全无效,Zendesk自然返回「Couldn't authenticate you」错误。

而修改后的脚本通过Get-AzKeyVaultSecret明确获取了有效的明文凭证值,确保$user和$pass是正确的账号密码,拼接出符合Basic Auth要求的用户名:密码格式字符串。

2. 字符串拼接的潜在差异

原脚本使用PowerShell格式化运算符-f拼接凭证:

("{0}:{1}" -f $username,$password)

若$username或$password包含特殊字符(如空格、引号),或者变量为空,格式化后的字符串可能不符合Basic Auth的标准格式。

修改后的脚本直接用字符串插值${user}:${pass}拼接,虽然逻辑类似,但由于从Key Vault获取的凭证是预验证的有效值,避免了格式错误的可能。

3. 其他次要差异

  • 原脚本使用Invoke-RestMethod,修改后用Invoke-WebRequest:这不是认证成功的关键,两个命令都支持HTTP认证,只是返回结果的处理方式不同。
  • 修改后的脚本明确设置了Azure上下文,确保能正确访问Key Vault获取凭证,避免了凭证获取失败的问题。

总结:原脚本的核心问题是未正确初始化账号密码变量,导致认证头无效;修改后的脚本通过Key Vault获取了有效的凭证值,同时确保了拼接格式正确,因此认证成功。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 02:25:33