【问题标题】:Cannot access Azure DevOps API using PAT in cURL command in Bash script无法在 Bash 脚本的 cURL 命令中使用 PAT 访问 Azure DevOps API
【发布时间】: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,这些在 BearerBasic 的所有迭代中都是未经授权的。使用的 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


    【解决方案1】:

    试试下面的命令:

    curl -u :{PAT} 'https://dev.azure.com/{company}/{project}/_apis/wit/wiql/{query ID}?api-version=5.1'
    

    在 -u 参数中,用户名字段必须为空,并且 PAT 是原始字符串。

    因此该命令将采用以下格式:

    curl -u :lplnqn4l4glwqkslsfel7t2wjevfi5tayuiwm772qeawbwo3ztua 'https://dev.azure.com/acme/projetx/_apis/wit/wiql/6cbbddb4-f752-453b-9f98-f523470826fe?api-version=5.1'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-08-19
      • 1970-01-01
      • 1970-01-01
      • 2019-04-05
      • 1970-01-01
      • 2023-02-22
      • 1970-01-01
      • 2021-03-02
      相关资源
      最近更新 更多