使用PowerShell连接Azure REST API返回203非权威信息认证问题
Azure DevOps API PowerShell认证失败解决办法
你的问题核心是Authorization头的格式错误,Azure DevOps的PAT令牌不支持直接用Token :xxx这种格式传递,必须用Basic认证规范来构造请求头。
正确的PowerShell请求写法
- 先将PAT转换为符合Basic认证要求的Base64编码:
格式为:{你的PAT}(用户名留空,只需要冒号加PAT),再转成Base64字符串。 - 构造正确的Authorization头,执行请求:
$pat = "你的PAT令牌内容" $encodedPat = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$pat")) $headers = @{ Authorization = "Basic $encodedPat" } Invoke-RestMethod "https://feeds.dev.azure.com/xx/x/_apis/packaging/Feeds/x/Packages" -Headers $headers
额外排查点
- PAT权限检查:确保你的PAT拥有
Packaging (Read)权限(访问Feed包列表需要这个权限),创建PAT时不要选太宽泛的权限,但至少要覆盖对应接口的需求。 - URL准确性:确认URL里的组织名、项目名、Feed名没有拼写错误,Azure DevOps的URL路径部分是区分大小写的。
- 避免多余空格:原请求里的
Token :xxx有空格,即使是支持Token认证的接口,这种空格也会导致头信息无效,一定要注意格式严谨。
为什么Postman能成功?
Postman里如果是用Basic Auth选项(用户名留空,密码填PAT),它会自动帮你完成Base64编码并生成正确的Basic xxx头,所以能正常认证;如果是手动写头,可能你无意中用了正确的格式,而PowerShell里的写法完全不符合Azure DevOps的认证规则,所以返回登录页面(说明认证失败,被重定向到登录页)。
内容的提问来源于stack exchange,提问作者J.Doe
相关产品推荐
相关产品推荐

