【问题标题】:In Azure DevOps, List Build Definitions API Returns 401在 Azure DevOps 中,列出生成定义 API 返回 401
【发布时间】:2020-09-27 00:00:47
【问题描述】:

我正在使用 Python 来查询我们组织的 Azure Devops 服务器的 REST API。几个月来,我几乎可以查询每种类型的对象(项目、工作项、团队、迭代、成员等),但是当我尝试查询构建或构建定义时,我得到了 401。我正在使用我的对所有内容具有读取权限的人员访问令牌。这个令牌还没有过期,因为我仍然可以从我的所有其他 API 调用中获得成功的 200 个响应来证明。奇怪的是,我能够使用相同的令牌和基本身份验证从 Postman 获得 200 结果。

这是我要访问的网址:

https://{MYCOMPANY}.com:{PORT}/{COLLEGTION}/{PROJECT}/_apis/build/definitions

知道为什么这个 API URL 的行为会有所不同吗?

【问题讨论】:

  • 你好朋友,这个问题有更新吗?如果您使用管理员帐户创建完全访问 PAT 并在下面的第二个代码示例中使用它,结果是什么? if 可以吗?(测试代码)

标签: api rest azure-devops


【解决方案1】:

如果 url 通过 Postman 在同一台机器上运行良好,那么它也应该适用于您的 python 脚本。

你可以检查几个点:

1.API版本。对于 TFS2018U2,它是 4.1,对于 Azure Devops Server 2019,它是 5.0。

2.Url,通常是这样的:

http://{tfsServerName}:8080/tfs/{CollectionName}/{ProjectName}/_apis/build/definitions?api-version=4.1

除非在服务器上启用 SSL,否则不应使用 https。另外,请确保启用了基本身份验证。检查这个similar one

3.查看python代码,windows操作系统有两种认证方式:

Windows 身份验证和带有 PAT 的基本身份验证。

对于 Windows 身份验证,您可以使用这样的代码(来自Roopendra 的提示):

import logging
import getpass
import requests
from requests_ntlm import HttpNtlmAuth

username = 'DomainName\\Administrator'
password = 'xxx'
tfsApi = 'http://xxx:8080/tfs/xxx/xxx/_apis/build/definitions?api-version=x.x'

tfsResponse = requests.get(tfsApi,auth=HttpNtlmAuth(username,password))
if(tfsResponse.ok):
    tfsResponse = tfsResponse.json()
    print(tfsResponse)
else:
    tfsResponse.raise_for_status()

对于带有 pat 的基本身份验证,您可以使用代码(来自Jack Jia 的提示):

import requests
import base64

pat = 'acxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxiq'
authorization = str(base64.b64encode(bytes(':'+pat, 'ascii')), 'ascii')

headers = {
    'Accept': 'application/json',
    'Authorization': 'Basic '+authorization
}

response = requests.get(
    url="http://MyServerName:8080/tfs/xxx/xxx/_apis/build/definitions?api-version=x.x", headers=headers)
print(response.text)

您也可以尝试创建一个新的 PAT 将完全访问用于测试目的...

【讨论】:

    猜你喜欢
    • 2020-01-21
    • 2019-07-21
    • 2019-11-13
    • 2019-10-15
    • 2019-08-28
    • 1970-01-01
    • 2020-08-25
    • 2016-04-05
    • 1970-01-01
    相关资源
    最近更新 更多