Get-AzAccessToken指定不同TenantId始终返回相同令牌问题
问题原因
- 当你使用
Connect-AzAccount -AccessToken <静态令牌>的方式登录Azure时,Az模块不会激活内置的令牌自动刷新、跨租户兑换逻辑,只会将你传入的初始令牌写入本地缓存。此时调用Get-AzAccessToken即使传入-TenantId参数,模块也不会实际向AAD发起新的令牌请求,会直接返回缓存中的初始OBO令牌,这是Az PowerShell的默认设计行为,并非AAD令牌接口故障。 - 你最初通过OBO流获取的令牌是向固定的主租户令牌端点申请的,该令牌仅在主租户范围内有效,本身不具备跨租户访问能力。OBO流不支持单端点签发多租户可用的令牌,访问不同租户必须单独向对应租户的AAD端点发起令牌申请,无法通过Az模块的自动缓存逻辑完成兑换。
- 请求头中获取的
x-ms-token-aad-id-token作为OBO断言是可以跨租户使用的,前提是目标租户允许当前登录用户、以及函数对应的AAD应用注册访问该租户资源。
排查思路
- 解码初始获取的OBO访问令牌,检查
tid声明字段,确认该令牌的签发租户确实为你最初请求的主租户,验证令牌本身不包含其他租户的授权信息。 - 跳过
Get-AzAccessToken命令,手动构造向目标租户端点发起的OBO请求,将请求地址替换为https://login.microsoftonline.com/<目标租户ID>/oauth2/v2.0/token,其余参数保持不变,验证是否可以正常获取目标租户的有效令牌,排除断言本身的权限问题。 - 检查Azure Function环境中安装的Az.Accounts模块版本,低于2.10.0的版本存在指定
-TenantId参数时错误返回缓存令牌的已知问题,可先升级到最新稳定版排除版本bug,但需要注意:即使升级版本,静态AccessToken登录模式下模块依然不会自动发起跨租户OBO请求。 - 确认函数对应的AAD应用注册是否配置为多租户应用,若应用为单租户模式,无法在其他租户中完成令牌签发。
解决方案
遍历租户列表时,不要调用Get-AzAccessToken尝试获取跨租户令牌,手动为每个目标租户发起OBO流请求获取对应访问令牌即可,参考代码如下:
foreach ($tenant in $allTenants) { # 拼接当前租户对应的AAD令牌端点 $targetTokenEndpoint = "https://login.microsoftonline.com/$($tenant.Id)/oauth2/v2.0/token" $tenantOboRequestBody = @{ grant_type = "urn:ietf:params:oauth:grant-type:jwt-bearer" client_id = $clientId client_secret = $clientSecret scope = "https://management.azure.com/user_impersonation" requested_token_use = "on_behalf_of" assertion = $assertion } try { $tenantTokenResponse = Invoke-RestMethod -Uri $targetTokenEndpoint -Method Post -Body $tenantOboRequestBody -ContentType "application/x-www-form-urlencoded" $tenantAccessToken = $tenantTokenResponse.access_token # 切换Az上下文到当前租户,执行后续资源操作 Connect-AzAccount -AccessToken $tenantAccessToken -AccountId $accountId -Tenant $tenant.Id | Out-Null # 此处编写对应租户的业务逻辑 } catch { # 处理无权限、租户未授权应用等异常场景 Write-Warning "租户 $($tenant.Id) 令牌获取失败: $($_.Exception.Message)" } }
- 如果需要减少重复的上下文切换开销,可以在拿到每个租户的令牌后,手动维护不同租户对应的Az上下文对象,按需切换即可。
- 若目标租户为外部来宾租户,需要提前确认当前登录用户在目标租户中已经激活对应权限,且租户管理员已经同意函数应用的
user_impersonation权限,否则OBO请求会返回授权错误。
内容的提问来源于stack exchange,提问作者Meelamri
相关产品推荐
相关产品推荐

