[英]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.