【发布时间】:2020-10-15 04:59:27
【问题描述】:
我有一个脚本,它使用 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 位于同一项目中。
- 新令牌具有完全访问权限。
Microsoft documentation on ADO PATs 提供了这个例子:
curl -u username[:{personalaccesstoken}] https://dev.azure.com/{organization}/_apis/build-release/builds
但是,当我使用我知道正确的 URL 输入我的用户名和 PAT 时,它是未经授权的。
无论是 Microsoft 示例的格式还是我想在我的脚本中使用的 URL,这些在 Bearer 和 Basic 的所有迭代中都是未经授权的。使用的 URL 在浏览器中有效:
- {用户名}:{PAT}
- {用户名}@{company}.com:{PAT}
- Base-64 编码 {PAT}
- Base-64 编码 {username}@{company}.com:{PAT}
- Base-64 编码的 pat:{PAT}
- Base-64 编码的{用户名}:{PAT}
- Base-64 编码 {username}@{company}.com:{PAT}
我在命令行和 Postman 中都尝试过,但没有提供任何附加信息。
我是否遗漏了一些明显的东西?最令人困惑的方面是之前的 PAT 在相同的代码中工作。感谢您的帮助。
【问题讨论】:
标签: bash azure api curl azure-devops