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

Posted

技术标签:

【中文标题】在不使用 PAT 的情况下验证 Azure Devops Api 调用?【英文标题】:Authenticate Azure Devops Api call without using a PAT? 【发布时间】:2021-12-27 23:11:41 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

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

确保您已安装 Az powershell 模块,并使用在您的 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

【讨论】:

太棒了。这使我能够跨多个存储库自动创建发布分支

以上是关于在不使用 PAT 的情况下验证 Azure Devops Api 调用?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不使用库的情况下验证本机 Javascript 中的 Azure OAuth 访问 JWT 令牌?

ASP NET API - 在不打开 Microsoft 登录页面的情况下使用 Azure AD SAML 协议对用户进行身份验证

我可以在不注册我的自动测试应用程序的情况下在 Azure 上获取访问令牌吗?

我们可以在不使用 SAS 令牌的情况下通过 c# 代码调用 Azure API 管理吗

编写 Azure Devops / TFS API 脚本时 - 有没有办法在不退出的情况下处理“Get Repo 不存在”错误响应?

在不使用 Azure SDK 的情况下使用 REST API 将流上传到 Azure Blob 存储