如何通过PowerShell脚本为Azure AD应用添加自定义API权限
给Azure AD应用添加自定义API权限的PowerShell脚本更新方法
要给AAD应用添加指定API的权限,核心是正确构造-RequiredResourceAccess参数的内容,下面是具体步骤和脚本示例:
1. 获取目标API的关键信息
首先得拿到你要授权的API的应用ID(Application ID),以及该API提供的权限ID(可在Azure门户的API权限页面查看,或用PowerShell查询)。
比如用PowerShell查询你的API服务主体信息:
# 替换为你的API的显示名称 $apiDisplayName = "你的自定义API显示名称" $apiServicePrincipal = Get-AzADServicePrincipal -DisplayName $apiDisplayName $apiAppId = $apiServicePrincipal.AppId
2. 构造权限配置对象
根据需要的权限类型(委派权限/应用权限),构造ResourceAccess对象,再包装成RequiredResourceAccess数组:
示例:添加委派权限(Delegated Permissions)
# 替换为你需要的委派权限ID $delegatedPermissionId = "xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" # 构造单个权限项 $delegatedAccess = [Microsoft.Azure.Commands.ActiveDirectory.PSADResourceAccess]@{ Id = $delegatedPermissionId Type = "Scope" # 委派权限用Scope,应用权限用Role } # 关联到目标API $requiredResourceAccess = [Microsoft.Azure.Commands.ActiveDirectory.PSADRequiredResourceAccess]@{ ResourceAppId = $apiAppId ResourceAccess = @($delegatedAccess) }
示例:添加应用权限(Application Permissions)
# 替换为你需要的应用权限ID $appPermissionId = "yyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy" $appAccess = [Microsoft.Azure.Commands.ActiveDirectory.PSADResourceAccess]@{ Id = $appPermissionId Type = "Role" } $requiredResourceAccess = [Microsoft.Azure.Commands.ActiveDirectory.PSADRequiredResourceAccess]@{ ResourceAppId = $apiAppId ResourceAccess = @($appAccess) }
若需添加多个权限,直接在ResourceAccess数组里追加更多对象即可。
3. 更新创建应用的脚本
把构造好的$requiredResourceAccess传入New-AzADApplication命令,完整脚本示例:
# 定义基础参数 $uiAppDisplayName = "你的应用显示名称" $replyUrls = @("https://your-app-url.com/auth/callback") $apiDisplayName = "你的自定义API显示名称" # 获取目标API的AppId $apiServicePrincipal = Get-AzADServicePrincipal -DisplayName $apiDisplayName $apiAppId = $apiServicePrincipal.AppId # 构造权限(这里以委派权限为例,可替换为应用权限) $delegatedPermissionId = "xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" $delegatedAccess = [Microsoft.Azure.Commands.ActiveDirectory.PSADResourceAccess]@{ Id = $delegatedPermissionId Type = "Scope" } $requiredResourceAccess = [Microsoft.Azure.Commands.ActiveDirectory.PSADRequiredResourceAccess]@{ ResourceAppId = $apiAppId ResourceAccess = @($delegatedAccess) } # 创建带指定API权限的AAD应用 $uiApp = New-AzADApplication -DisplayName $uiAppDisplayName ` -AvailableToOtherTenants $false ` -ReplyUrls $replyUrls ` -RequiredResourceAccess $requiredResourceAccess
4. 补充:若应用已创建,更新权限
如果AAD应用已经存在,用Update-AzADApplication命令更新权限:
# 替换为已创建应用的ObjectId或AppId $existingAppObjectId = "zzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz" Update-AzADApplication -ObjectId $existingAppObjectId ` -RequiredResourceAccess $requiredResourceAccess
注意:权限添加后,还需根据权限类型完成管理员同意(应用权限必须由管理员同意,委派权限可由用户或管理员同意),才能实际生效。
内容的提问来源于stack exchange,提问作者user989988
相关产品推荐
相关产品推荐

