2

通过 PowerShell 通过 REST API 访问 Azure DevOps 时,用于身份验证的个人访问令牌 (PAT)需要完全访问权限

PAT 范围设置

当 PAT 设置为自定义访问并启用每个范围时,一些请求会失败:

Invoke-RestMethod :远程服务器返回错误:(401)未经授权。

为什么完全访问权限不等于启用每个范围和最大权限的自定义访问权限?是否不可能将 PAT 限制在请求实际涉及的范围内?

编辑:相关的 REST API 请求:

GET https://dev.azure.com/{organization}/{project}/_apis/build/latest/{definition}?api-version=5.1-preview.1
4

2 回答 2

0

我试图使用 curl 下载文件,这需要 PAT。在 GitHub 中,它无需 PAT 即可工作。当我在 Azure DevOps 设置中将个人访问令牌设置为完全访问时,它工作正常。所以我设置自定义然后启用所有自定义定义的访问范围。

我不得不点击底部的按钮:

在 PAT 设置中显示所有范围

当我启用所有身份验证工作时,这列出了所有范围。然后我一次禁用 5 个并重新测试,发现我需要的只是 Token Administration [Read & Manage]。

令牌管理范围图像

于 2020-06-05T19:42:00.520 回答
0

对于这个问题,我测试了你列出的 api。我尝试只在Build Scope 中选择读取访问权限,PAT 工作正常。

在此处输入图像描述

在此处输入图像描述

我还尝试在启用每个范围的情况下设置自定义访问,显然这也可以正常工作。

在一些特殊的 api 中,我们只能使用Full access,因为并非所有作用域都会在Custom defined access. 某些特殊情况 api 的范围未定义在Custom defined access. 例如,该 api 是从浏览器的网络中跟踪的,并且没有记录在官方文档中。你可以参考这个案例

您使用的 api 在文档中有记录,您可以尝试在 Postman 中进行测试,看看是否有相同的结果。

于 2020-01-23T08:57:57.220 回答