使用Python获取Azure DevOps项目工作项时的Authentication认证问题
问题解答
1. 认证方式说明
- 仅使用PAT完全可以满足Azure DevOps API调用需求,不需要额外注册应用获取OAuth2 Token。PAT是官方提供的轻量认证方案,完全适配个人脚本、工具对接的场景。
- 你当前生成Basic认证头的逻辑是正确的,Azure DevOps的PAT认证确实采用Basic Auth规则:用户名留空、密码为PAT,整体做Base64编码后放入请求头即可。
2. 现有代码的问题
你构造的POST请求没有带入已经写好的headers认证头,同时调用WIQL查询接口时需要指定请求体为JSON格式,直接传Python字典会触发默认的表单格式提交,接口无法识别。
3. 修正后的可运行代码
import requests import base64 pat = '替换为你的实际PAT值' authorization = str(base64.b64encode(bytes(':'+pat, 'ascii')), 'ascii') headers = { 'Accept': 'application/json', 'Authorization': 'Basic '+authorization } data = { "query": "Select [System.Id], [System.Title], [System.State] From WorkItems Where [System.WorkItemType] = 'Task'" } # 两处修改:带入headers认证头,用json参数传数据,requests会自动适配JSON格式要求 wo_it = requests.post('https://dev.azure.com/company/example_project/_apis/wit/wiql?api-version=5.1', headers=headers, json=data) print(wo_it.text)
额外注意事项
- 生成PAT时需要确认已经开通对应权限,读取工作项需要勾选
Work Items的读取权限,权限不足会返回403错误。 - 不要把PAT硬编码到公开可访问的代码中,避免账号权限泄露。
内容的提问来源于stack exchange,提问作者Abhishek Rai
相关产品推荐
相关产品推荐

