【问题标题】:Using a personal access token for azure devops API repository manipulation使用个人访问令牌进行 azure devops API 存储库操作
【发布时间】:2020-02-23 20:04:55
【问题描述】:

我已经从 Azure Devops 用户界面生成了一个个人访问令牌,但我无法使用它来向 Devops API 发出请求。

我尝试了许多不同的标头字段,但我总是被重定向到登录页面,就好像我没有经过身份验证一样。

token = #Token generated on Devops project page
token_bytes = token.encode('utf-8')
token64 = base64.b64encode(token_bytes)
authorization_string = "basic " + str(token64)

repo_endpoint_url = "https://dev.azure.com/{organization}/{project}/_apis/git/repositories?api-version=5.1".format(organization=organization, project=project)

headers = {"Content-Type" : "application/json", "Authorization" : authorization_string}

response = requests.get(repo_endpoint_url, headers)

响应总是 203 与登录页面 HTML。如果标题中没有访问令牌,这就是我希望看到的。

我试过用“Bearer”代替“basic”,我试过添加 {username}:{token} 和许多其他的小调整。

我做错了什么?

【问题讨论】:

  • 很高兴看到在我的令牌前面添加一个冒号是一个潜在的修复,但遗憾的是它对我的脚本的运行没有任何影响。我仍然收到 203 响应,其中包含 html 提示登录详细信息
  • 您是否也进行了base64 编码?
  • 您为 PAT 提供了哪个范围?
  • @ycx 是的。我在重新输入代码时遗漏了一行(无法从 VM 复制并粘贴到我的本地),但我使用的是上面更新的 base64 python 包

标签: python request azure-devops access-token azure-devops-rest-api


【解决方案1】:

我刚刚剪贴了以下对我有用的代码:

import requests
import base64

repo_endpoint_url = "https://dev.azure.com/<organization>/<project>/_apis/git/repositories?api-version=5.1"

username = "" # This can be an arbitrary value or you can just let it empty
password = "<your-password-here>"
userpass = username + ":" + password
b64 = base64.b64encode(userpass.encode()).decode()
headers = {"Authorization" : "Basic %s" % b64} 

response = requests.get(repo_endpoint_url, headers=headers)
print(response.status_code) # Expect 200

【讨论】:

  • 有趣的是,在进行这些更改后,我不再得到 203,而是现在得到 401,未经授权。我只能假设这是一个完全不同的问题。你知道我得到 401 的任何原因吗?
  • 在这种情况下,我认为访问令牌要么无法对指定项目的存储库执行读取操作,要么已经过期。
  • 不确定到底发生了什么让我得到 401,但我重新生成了令牌并将其直接复制粘贴,现在它正在工作。非常感谢xo
【解决方案2】:

经过近 1 周的调查,TOKEN 是唯一对我有帮助的东西!

【讨论】:

    猜你喜欢
    • 2021-11-15
    • 1970-01-01
    • 2020-07-27
    • 2020-08-31
    • 1970-01-01
    • 1970-01-01
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多