簡體   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