Azure DevOps服务连接调用AAD Graph API被阻止问题求助
问题分析与解决方案
核心原因
报错Access blocked to AAD Graph API for this application.的本质是AAD Graph(graph.windows.net)已被微软正式弃用并逐步限制访问。你的脚本依赖AzureAD模块,而该模块底层调用AAD Graph,即使之前正常运行,近期微软收紧了对AAD Graph的访问控制,导致原有调用被拦截。
解决方案:切换到Microsoft Graph PowerShell模块
微软已明确推荐使用Microsoft Graph替代AAD Graph,需修改脚本使用Microsoft.Graph系列模块,同时调整权限配置:
1. 调整服务连接权限
确保工作负载身份联合对应的应用注册,拥有Microsoft Graph的以下应用权限(需管理员同意):
Application.ReadWrite.All:用于创建应用注册和服务主体
2. 修改PowerShell脚本
替换原有依赖AAD Graph的代码,改用Microsoft Graph模块:
# 通过Azure DevOps工作负载身份联合自动认证到Microsoft Graph Connect-MgGraph -Identity # 配置应用注册参数 $appRegistrationParams = @{ DisplayName = "$(RedirectURI)" Web = @{ RedirectUris = @("$(URL)") } } # 创建应用注册 $newApplication = New-MgApplication @appRegistrationParams # 创建对应的服务主体 $enterpriseApplication = New-MgServicePrincipal -AppId $newApplication.AppId
3. 确保Azure DevOps任务环境支持
如果代理环境未预装Microsoft Graph模块,需在任务中添加安装步骤:
Install-Module -Name Microsoft.Graph.Applications -Force -Scope CurrentUser -AllowClobber
额外排查点
- 确认服务连接的应用注册已完成Microsoft Graph权限的管理员同意,权限状态显示为“已授予”
- 检查Azure DevOps任务使用的PowerShell版本需支持Microsoft Graph模块(推荐PowerShell 7.x)
- 验证工作负载身份联合配置未变更,服务连接的身份能正常访问Microsoft Graph
内容的提问来源于stack exchange,提问作者Sergio
相关产品推荐
相关产品推荐

