在不使用 PAT 的情况下验证 Azure Devops Api 调用?

1 powershell azure-devops

当使用 Azure Devops 功能(例如创建新的 Repo 或启动管道)时,是否有任何方法可以通过 Powershell 在没有访问令牌的情况下对用户进行身份验证?我发现的唯一其他解决方案是 Azure CLI,尽管我更喜欢调用 Web API 调用。

Joy*_*ang 7

实际上,您确实可以在不使用 PAT(个人访问令牌)的情况下对 Azure DevOps REST API 进行身份验证,但如果没有任何访问令牌则无法对其进行身份验证。即使您使用用户帐户进行身份验证,本质上它也会生成一个访问令牌来进行身份验证。

根据您的要求,如果您想使用 powershell 来验证 REST API,您可以使用下面的脚本。

确保您已安装Azpowershell 模块,并使用在您的 devops 组织中具有权限的用户帐户通过 登录Connect-AzAccount

这是启动管道的示例Runs - Run Pipeline。此示例使用 Azure AD 访问令牌进行身份验证,请注意不要更改499b84ac-1321-427f-aa17-267ca6975798脚本中的 ,它是 DevOps REST API 的众所周知的资源 id,它对我有用。

$token = (Get-AzAccessToken -ResourceUrl "499b84ac-1321-427f-aa17-267ca6975798").Token
$URL = 'https://dev.azure.com/orgname/testpro1/_apis/pipelines/52/runs?api-version=6.0-preview.1'
$header = @{
    'Authorization' = 'Bearer ' + $token
    'Content-Type' = 'application/json'
}
$body = @"
  {
    "resources": {
        "repositories": {
            "self": {
                "refName": "refs/heads/main"
            }
        }
    }
  }
"@

Invoke-RestMethod -Method Post -Uri $URL -Headers $header -Body $body | ConvertTo-Json
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述