You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

迁移至Az模块后,如何用PowerShell启用oauth2AllowImplicitFlow?

问题:Az模块PowerShell中如何启用应用注册的隐式授权?

我正从AzureAD模块迁移至Az模块PowerShell命令,用于创建应用注册并启用隐式授权,但发现Az模块的New-AzADApplication不支持oauth2AllowImplicitFlow参数。

原AzureAD模块脚本

Connect-AzureAD -TenantId <<TenantId>>
 
$appName = "<<AppName>>"
$redirectUris = @("https://mspmecloud.onmicrosoft.com/$appName")
$secretName = "secretKey"

$App = (New-AzureADApplication -DisplayName $appName `
-ReplyUrls $redirectUris `
-Homepage "https://mspmecloud.onmicrosoft.com/$appName" `
-IdentifierUris "https://mspmecloud.onmicrosoft.com/$appName"`
-Oauth2AllowImplicitFlow $true -PublicClient $false
)
 
New-AzureADServicePrincipal -AccountEnabled $true -AppId $App.AppId -DisplayName $appName

现有Az模块脚本

$appName = "<<AppName>>"
$redirectUris = @("https://mspmecloud.onmicrosoft.com/$appName")
$secretName = "secretKey"
$App = (New-AzADApplication -DisplayName $appName `
-ReplyUrls $redirectUris `
-Homepage "https://mspmecloud.onmicrosoft.com/$appName" `
-IdentifierUris "https://mspmecloud.onmicrosoft.com/$appName"`
)
New-AzADServicePrincipal -ApplicationId $App.AppId

需要通过脚本实现隐式授权及公开API配置,请问Az模块中有什么替代方法?


解决方案

Az模块的New-AzADApplication确实没有直接对应oauth2AllowImplicitFlow的参数,你可以通过以下两种方式实现需求:

方法1:使用Update-AzADApplication修改应用属性

创建应用后,调用Update-AzADApplication启用隐式授权,并配置公开API的权限范围:

# 创建应用
$appName = "<<AppName>>"
$redirectUris = @("https://mspmecloud.onmicrosoft.com/$appName")
$identifierUri = "https://mspmecloud.onmicrosoft.com/$appName"

$App = New-AzADApplication -DisplayName $appName `
    -ReplyUrls $redirectUris `
    -Homepage "https://mspmecloud.onmicrosoft.com/$appName" `
    -IdentifierUris $identifierUri

# 启用隐式授权(允许ID令牌和访问令牌)
Update-AzADApplication -ApplicationId $App.Id `
    -Oauth2AllowImplicitFlow $true `
    -Oauth2AllowIdTokenImplicitFlow $true `
    -Oauth2AllowAccessTokenImplicitFlow $true

# 配置公开API的权限范围
$permissionScope = @{
    Id = [Guid]::NewGuid().ToString()
    Value = "user_impersonation"
    Type = "User"
    AdminConsentDisplayName = "允许用户模拟"
    AdminConsentDescription = "允许应用代表用户访问资源"
    UserConsentDisplayName = "允许用户模拟"
    UserConsentDescription = "允许应用代表您访问资源"
    IsEnabled = $true
}

Update-AzADApplication -ApplicationId $App.Id `
    -Oauth2PermissionScope @($permissionScope)

# 创建服务主体
New-AzADServicePrincipal -ApplicationId $App.AppId -AccountEnabled $true

方法2:调用Microsoft Graph API(更灵活)

如果需要更精细的配置,可以直接调用Microsoft Graph接口修改应用属性:

# 连接Az账号并获取Graph访问令牌
Connect-AzAccount -TenantId <<TenantId>>
$token = (Get-AzAccessToken -ResourceUrl "https://graph.microsoft.com").Token

# 创建应用
$appName = "<<AppName>>"
$redirectUris = @("https://mspmecloud.onmicrosoft.com/$appName")
$identifierUri = "https://mspmecloud.onmicrosoft.com/$appName"

$App = New-AzADApplication -DisplayName $appName `
    -ReplyUrls $redirectUris `
    -Homepage "https://mspmecloud.onmicrosoft.com/$appName" `
    -IdentifierUris $identifierUri

# 构造请求体,包含隐式授权和公开API配置
$body = @{
    oauth2AllowImplicitFlow = $true
    oauth2AllowIdTokenImplicitFlow = $true
    oauth2AllowAccessTokenImplicitFlow = $true
    api = @{
        oauth2PermissionScopes = @(
            @{
                id = [Guid]::NewGuid().ToString()
                value = "user_impersonation"
                type = "User"
                adminConsentDisplayName = "允许用户模拟"
                adminConsentDescription = "允许应用代表用户访问此应用的资源"
                userConsentDisplayName = "允许用户模拟"
                userConsentDescription = "允许应用代表您访问此应用的资源"
                isEnabled = $true
            }
        )
    }
} | ConvertTo-Json

# 调用Graph API更新应用
Invoke-RestMethod -Uri "https://graph.microsoft.com/v1.0/applications/$($App.Id)" `
    -Method PATCH `
    -Headers @{Authorization = "Bearer $token"} `
    -Body $body `
    -ContentType "application/json"

# 创建服务主体
New-AzADServicePrincipal -ApplicationId $App.AppId -AccountEnabled $true

内容的提问来源于stack exchange,提问作者Diwakar Reddy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 19:04:54