【问题标题】:Authentication when Get Azure DevOps Project Work Items using Python使用 Python 获取 Azure DevOps 项目工作项时的身份验证
【发布时间】:2021-11-26 10:52:43
【问题描述】:

我正在尝试获取 Azure DevOps 中项目的所有工作项。

我面临的问题是身份验证。如何在发送此帖子请求之前进行身份验证/登录?

文档将安全性显示为 0auth2 。但是,我有一个个人访问令牌......正确的方法是什么?如何发送经过身份验证的 POST 请求。我是否必须注册应用程序并获得0auth Token etc..或者 PAT 就足够了?

import requests
import base64

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

headers = {
    'Accept': 'application/json',
    'Authorization': 'Basic '+authorization
}
# response = requests.get(url="https://dev.azure.com/company/_apis/projects?api-version=5.1", headers=headers).json()

data = {
  "query": "Select [System.Id], [System.Title], [System.State] From WorkItems Where [System.WorkItemType] = 'Task'"
}
wo_it = requests.post('https://dev.azure.com/company/example_project/_apis/wit/wiql?api-version=5.1',data=data)
print(wo_it.text)

【问题讨论】:

标签: python azure azure-devops


【解决方案1】:

Azure DevOps REST API 支持多种不同的身份验证方式,例如OAuth 2.0、Azure AD 身份验证、PAT。

对于你正在使用的特定API_apis/wit/wiql,使用PAT就足够了,你不需要注册应用程序。而且你应该知道 OAuth 2.0 和 Azure AD auth 都是用户交互的方式,如果你想用非交互方式在 python 中调用 API,PAT 是选项。

PAT 使用的是基本认证,每次发送 API 请求时,您都需要对其进行 base64 编码,并将编码后的内容传递给请求正文。我看到你在列出项目时只是使用令牌,但在调用_apis/wit/wiql时没有使用它,你也需要这样做,然后它会起作用。

参考 - https://docs.microsoft.com/en-us/azure/devops/integrate/get-started/authentication/authentication-guidance?view=azure-devops

【讨论】:

    猜你喜欢
    • 2020-06-16
    • 1970-01-01
    • 1970-01-01
    • 2020-11-11
    • 2021-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多