Azure DevOps构建代理的令牌缓存中没有访问令牌

时间:2019-10-15 15:10:18

标签: azure azure-devops

我正在尝试从Azure DevOps构建代理中调用rest api。为此,我需要可以通过以下方式进入本地计算机的bearertoken:

$accessToken = ((Get-AzContext).TokenCache.ReadItems() | Where { $_.TenantId -eq (Get-AzContext).Tenant } | Sort-Object -Property ExpiresOn -Descending)[0].AccessToken

但是,在构建代理上,它从不返回任何令牌。我还有其他方法可以尝试获取该令牌吗?

2 个答案:

答案 0 :(得分:1)

您是否已在“代理”设置中启用“允许脚本访问OAuth令牌”设置?

enter image description here

这将是使用可视化设计器进行的构建和发行。

有关YAML构建,请参见the predefined variable documentation。有关在脚本中使用“ System.AccessToken”变量的说明。本质上,必须使用变量将System.AccessToken显式映射到管道中。您可以在步骤或任务级别执行此操作:

steps:
  - bash: echo This is a script that could use $SYSTEM_ACCESSTOKEN
    env:
      SYSTEM_ACCESSTOKEN: $(System.AccessToken)
  - powershell: Write-Host "This is a script that could use $env:SYSTEM_ACCESSTOKEN"
    env:
      SYSTEM_ACCESSTOKEN: $(System.AccessToken)

答案 1 :(得分:0)

感谢您的建议和想法。答案太简单,无法弄清楚。我撕掉了大部分的oneliner,现在仅使用以下命令即可发挥作用:

$accessToken = ((Get-AzContext).TokenCache.ReadItems()