我们在尝试将 Azure DevOps 服务连接与联合服务主体结合使用时遇到问题。看起来联邦令牌会在 55 分钟后过期,并且不会自动刷新。
对于示例,我附加了一个非常简单的管道,该管道在无限循环中将 Set-AzContext 运行到同一订阅 ID
该管道在 56 次迭代后失败(每次迭代之间有 1 分钟的睡眠时间),即令牌过期的确切时间!
trigger: none
stages:
- stage: "create_VM_report"
jobs:
- job: Cost_optimization
displayName: Cost optimization report
timeoutInMinutes: 240
pool:
vmImage: "ubuntu-latest"
steps:
- task: AzurePowerShell@5
displayName: federation service connection test
inputs:
azureSubscription: 'lz-service-connection-ro' ## federation
ScriptType: 'InlineScript'
Inline: |
\## endless loop
$i = 0
while ($true) {
Write-Host "Loop number: $i"
Set-AzContext -SubscriptionId ‘\<put your subs ID\>' ## itbtg-ccoe-lab
Start-Sleep -Seconds 60
$i++
}
azurePowerShellVersion: 'LatestVersion'
pwsh: true
Error message:
Loop number: 55
WARNING:Unable to acquire token for tenant '' with error'A configuration issue is preventing authentication Original exception: AADSTS700024: Client assertion is not within its valid time range. expiry time of assertion
我们在使用 DevOps 的联合服务连接时遇到了同样的问题。
这也意味着当56分钟后重新运行某个阶段时,该阶段执行将会失败。 基本上,管道中的重新运行阶段将不再起作用。
目前这个问题阻碍我们将所有 DevOps 服务连接迁移到使用联合。