繁体   English   中英

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

[英]Azure DevOps build agent does not have accesstokens in its tokencache

我正在尝试从 Azure DevOps 构建代理中调用 rest api。 为此,我需要 Bearertoken,我可以通过以下方式在我的本地机器中获取它:

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

但是,在构建代理上,这永远不会返回任何令牌。 还有其他方法我应该尝试获取该令牌吗?

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

在此处输入图像描述

这适用于使用视觉设计器的构建和发布。

对于 YAML 构建,请参阅预定义变量文档 有关于在脚本中使用“System.AccessToken”变量的说明。 本质上,您必须使用变量将 map 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)

感谢您的建议和想法。 答案太简单了,无法弄清楚。 我撕掉了大部分的oneliner,现在它只使用:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM