Powershell 无法使用PAT对Azure DevOps\u API/distributedtask/VariableGroup进行身份验证

Powershell 无法使用PAT对Azure DevOps\u API/distributedtask/VariableGroup进行身份验证,powershell,azure-devops,base64,azure-devops-rest-api,Powershell,Azure Devops,Base64,Azure Devops Rest Api,我正在使用Powershell运行对Azure DevOps API的简单调用: $base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f "{USER}","{PAT}"))) $url = "https://dev.azure.com/{ORG_NAME}/{PROJECT_NAME}/_apis/distributedtask/variablegroups/{ID}?a

我正在使用Powershell运行对Azure DevOps API的简单调用:

$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f "{USER}","{PAT}")))
$url = "https://dev.azure.com/{ORG_NAME}/{PROJECT_NAME}/_apis/distributedtask/variablegroups/{ID}?api-version=5.0-preview.1"
Invoke-RestMethod -Uri $url -Method Get -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}   
错误显示在以下内容之后:

Invoke-RestMethod: Response status code does not indicate success: 401 (Unauthorized).
为了找出问题所在,所有配置都是根据和文章进行的

奇怪的是,在不指定项目的情况下对API运行调用的处理过程中没有出现错误:

$url2 = "https://dev.azure.com/{ORG_NAME}/_apis/projects?api-version=2.0" 
Invoke-RestMethod -Uri $url2 -Method Get -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}
答复:

count value
----- -----
    5 {@{id=xxxxxxx-89f3-46b0-af7e-xxxxxxx; name=Xxxxx; description=F…

您的PAT似乎无权访问变量组

您可以转到PAT编辑页面检查PAT是否至少被分配了变量组的读取权限。请参见下面的屏幕截图

为PAT授予适当的权限范围,然后再次尝试调用rest api


看起来它们只是对用户名进行base64编码,然后将PAT标记放在冒号后面<代码>然后,生成的字符串可以以下列格式作为HTTP头提供:Authorization:Basic BASE64USERNAME:PATSTRING。然后,C#示例继续为用户名提供一个空字符串。有几件事要尝试。嗯,不确定,因为我第一次尝试只使用编码的PAT令牌,但出现了一个错误。切换到完全编码(用户名:PAT)后,我能够进行身份验证。我不知道这种精确的拍片剪裁。谢谢