AAD应用管理员同意失败求助(需PowerShell脚本解决方案)
解决AAD应用管理员同意时的"未订阅服务"错误
问题场景
作为全局管理员,使用New-AzureADApplication -DisplayName "test"创建AAD应用后,执行az ad app permission admin-consent --id "$($app.Id)"时遇到以下错误:
az : ERROR: Bad Request({"ClassName":"Microsoft.Portal.Framework.Exceptions.ClientException","Message":"Graph call failed with httpCode=BadRequest, errorCode=Request_BadRequest, errorMessage=The application needs access to a service that your organization aadb2c01 has not subscribed to. Please contact your administrator to review the configuration of your service subscriptions. At line:141 char:13 + az ad app permission admin-consent --id "$($app.Id)"
经测试,通过Azure门户创建的应用(会自动生成服务主体SPN)可正常完成管理员同意,需要通过PowerShell脚本实现完整流程。
解决方案
问题根源在于New-AzureADApplication仅创建了应用注册对象,未自动生成对应的服务主体(SPN),而管理员同意操作依赖服务主体存在才能完成权限关联。只需在创建应用后手动生成服务主体即可解决:
完整PowerShell脚本步骤
- 创建AAD应用并保存对象:
$app = New-AzureADApplication -DisplayName "test"
- 为该应用创建对应的服务主体:
New-AzureADServicePrincipal -AppId $app.AppId
- 等待10-60秒让服务主体同步到Azure AD系统,再执行管理员同意命令:
az ad app permission admin-consent --id "$($app.Id)"
补充说明
Azure门户创建应用时,后台会自动完成"应用注册+服务主体创建"的联动操作;但New-AzureADApplication cmdlet仅负责创建应用注册,必须手动调用New-AzureADServicePrincipal生成SPN,否则管理员同意时会因身份关联缺失触发"未订阅服务"的错误提示(实际为权限验证失败)。
内容的提问来源于stack exchange,提问作者vamsi krishna paruchuri
相关产品推荐
相关产品推荐

