求助:使用PowerShell创建含客户端密钥与API权限的Azure应用遇模块问题
在Azure中创建带客户端密钥和API权限的应用脚本方案
使用Microsoft Graph PowerShell模块(MgGraph)完整实现
Microsoft Graph PowerShell是AzureAD模块的官方替代方案,可一站式完成所有操作,推荐使用。
1. 准备工作:安装模块并登录
# 安装Beta模块(若未安装) Install-Module Microsoft.Graph.Beta -Force -AllowClobber # 导入应用管理相关模块 Import-Module Microsoft.Graph.Beta.Applications # 交互式登录,请求必要权限 Connect-MgGraph -Scopes "Application.ReadWrite.All", "Directory.ReadWrite.All" -Interactive
2. 创建Azure AD应用
$appName = "你的应用名称" $myApp = New-MgBetaApplication -DisplayName $appName
3. 添加客户端密钥
$startDate = Get-Date $endDate = $startDate.AddYears(1) # 创建客户端密钥并设置有效期 $appSecret = New-MgBetaApplicationPassword -ApplicationId $myApp.Id -PasswordCredential @{ DisplayName = "Access" StartDateTime = $startDate EndDateTime = $endDate } # 注意:密钥值仅在创建时可见,务必保存 Write-Host "客户端密钥值: $($appSecret.SecretText)"
4. 添加API权限
以添加Microsoft Graph的User.Read.All应用权限为例:
# 获取Microsoft Graph服务主体 $graphSp = Get-MgBetaServicePrincipal -Filter "displayName eq 'Microsoft Graph'" # 定位目标权限(应用权限) $targetPermission = $graphSp.AppRoles | Where-Object { $_.Value -eq "User.Read.All" -and $_.AllowedMemberTypes -contains "Application" } # 为应用添加API权限 New-MgBetaApplicationPermissionGrant -ApplicationId $myApp.Id -ResourceId $graphSp.Id -Scope $targetPermission.Value
5. 授予管理员同意(应用权限必填)
如果添加的是应用权限,需完成管理员同意才能生效:
New-MgBetaOauth2PermissionGrant -ClientId $myApp.Id -ResourceId $graphSp.Id -Scope $targetPermission.Value -ConsentType "AllPrincipals"
使用AzureAD模块添加API权限的方法
若仍需使用AzureAD模块,可通过以下代码补充API权限配置:
# 获取Microsoft Graph服务主体 $graphSp = Get-AzureADServicePrincipal -Filter "DisplayName eq 'Microsoft Graph'" # 定位目标权限 $targetPermission = $graphSp.AppRoles | Where-Object { $_.Value -eq "User.Read.All" -and $_.AllowedMemberTypes -contains "Application" } # 构建权限对象 $requiredAccess = New-Object Microsoft.Open.AzureAD.Model.RequiredResourceAccess $requiredAccess.ResourceAppId = $graphSp.AppId $requiredAccess.ResourceAccess = New-Object Microsoft.Open.AzureAD.Model.ResourceAccess($targetPermission.Id, "Role") # 更新应用的API权限 Set-AzureADApplication -ObjectId $myApp.ObjectId -RequiredResourceAccess $requiredAccess
内容的提问来源于stack exchange,提问作者CLiFoS
相关产品推荐
相关产品推荐

