如何通过PowerShell为Azure AD新应用注册添加offline_access权限
解决Azure AD应用注册添加
offline_access权限的PowerShell方法 offline_access是Microsoft Graph的委派权限(而非应用权限),所以你在$targetSp.AppRoles里找不到它——AppRoles仅对应应用权限。要通过PowerShell添加这个权限,需要从OAuth2权限集合里定位它,并按委派权限的逻辑配置:
具体操作步骤
- 定位Microsoft Graph服务主体及
offline_access权限
# 获取Microsoft Graph服务主体 $graphSp = Get-AzureADServicePrincipal -Filter "DisplayName eq 'Microsoft Graph'" # 从OAuth2权限中找到offline_access $offlineAccessPerm = $graphSp.Oauth2Permissions | Where-Object { $_.Value -eq "offline_access" }
- 给目标应用注册添加该委派权限
假设你已经创建了目标应用注册,先获取应用对象:
$targetApp = Get-AzureADApplication -Filter "DisplayName eq '你的应用名称'"
方式一:添加到应用的权限配置列表(需手动在门户同意)
# 构建权限配置对象 $requiredAccess = [Microsoft.Open.AzureAD.Model.RequiredResourceAccess]@{ ResourceAppId = $graphSp.AppId ResourceAccess = @( [Microsoft.Open.AzureAD.Model.ResourceAccess]@{ Id = $offlineAccessPerm.Id Type = "Scope" # 委派权限必须指定为Scope,应用权限用Role } ) } # 更新应用注册的权限配置 Set-AzureADApplication -ObjectId $targetApp.ObjectId -RequiredResourceAccess $requiredAccess
方式二:直接完成管理员委派权限同意
# 创建委派权限授予 New-AzureADDelegatedPermissionGrant -ObjectId $targetApp.ObjectId -ResourceId $graphSp.ObjectId -Scope $offlineAccessPerm.Value
关键注意点
- 区分权限类型:
offline_access只有委派形式,所以Type必须设为Scope;而User.Read.All如果是应用权限,Type则为Role。 - 确保你使用的PowerShell模块(AzureAD/AzureADPreview)有权限执行这些操作,需以全局管理员或应用管理员身份运行。
内容的提问来源于stack exchange,提问作者Harry
相关产品推荐
相关产品推荐

