我有一个脚本,它使用Azure DevOps API检索查询中的每个工作项。然后它检索每个工作项的元数据。它需要PAT。直到今天为止,PAT一直有效。我认为它已过期。我创建了一个新的PAT,但每次尝试检索相同信息都是未经授权的(401)。
我的脚本中的cURL命令一直有效:
ado_token={username@company.com:PAT, all Base-64 encoded as one string}
curl -X GET -H "Authorization: Basic $ado_token" -H 'Cache-Control: no-cache' "https://dev.azure.com/{company}/{project}/_apis/wit/wiql/{query ID}?api-version=5.1"
以下是事实:
- 在浏览器中直接转到URL会成功。
- 新令牌与URL位于同一项目中。
- 新令牌具有完全访问权限。
有关ADO PAT的Microsoft文档提供了以下示例:
curl -u username[:{personalaccesstoken}] https://dev.azure.com/{organization}/_apis/build-release/builds
但是,当我的用户名和PAT与一个我知道是正确的URL输入时,它是未经授权的。
无论是Microsoft示例的格式,还是我希望在脚本中使用的URL,在Bearer
和Basic
的所有迭代中都是未经授权的。使用的URL在浏览器中有效:
- {用户名}:{PAT}
- {用户名}@{公司}.com:{PAT}
- Base-64编码{PAT}
- Base-64编码的{用户名}@{公司}.com:{PAT}
- Base-64编码的pat:{PAT}
- Base-64编码的{用户名}:{PAT}
- Base-64编码的{用户名}@{公司}.com:{PAT}
我已经尝试了命令行和 Postman ,但没有提供额外的信息。
我是否遗漏了一些明显的东西?最令人困惑的是,以前的PAT在同一代码中工作。感谢您的帮助。
2条答案
按热度按时间c86crjj01#
请尝试以下命令:
在-u参数中,用户名字段必须为空,PAT是原始字符串。
因此,该命令将采用以下格式:
ljo96ir52#
Postman
1.使用不带用户名的授权:选择Basic Auth.(基本身份验证)并输入PAT作为密码。
1.使用标头:将密钥用作授权,将值用作基本{Base-64编码的pat{:PAT}}。请注意,{:PAT}需要进行base64编码
curl
1.使用基本身份验证而不使用用户名: curl -u:{PAT} https://dev.azure.com/{org}/_apis/projects
1.使用标头:curl -H '授权:基本{Base-64编码路径{:PAT}}'https://dev.azure.com/{org}/_apis/projects