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

如何用PowerShell创建Azure应用注册并配置API范围及关联客户端应用

解决Entra ID应用注册与API权限配置的PowerShell脚本

以下是完成你需求的完整PowerShell脚本,针对你遇到的API范围配置问题,会重点说明参数对应关系与实现逻辑:

1. 交互式登录Entra ID(支持MFA)

Connect-AzAccount -Interactive

该命令会弹出交互式登录窗口,原生支持MFA验证。

2. 创建单租户服务器应用并暴露API范围

核心解决你困惑的api://标识符与API范围配置问题:

# 创建单租户服务器应用注册,指定api://格式的应用程序ID URI
$serverApp = New-AzADApplication -DisplayName "Connection (Server, Test)" `
    -SignInAudience "AzureADMyOrg" `
    -IdentifierUris "api://$((New-Guid).Guid)"

# 定义API范围参数:对应门户操作里的范围配置
$apiScope = @{
    Id = (New-Guid).Guid          # 范围的唯一ID,对应门户中API范围的"ID"字段
    Value = "API.Access"          # 范围名称,即你需要的"API.Access"
    Type = "User"                 # 设为User同时支持管理员、用户同意;仅管理员同意可设为"Admin"
    AdminConsentDisplayName = "访问服务器测试API"
    AdminConsentDescription = "授予对服务器测试API的访问权限"
    UserConsentDisplayName = "访问服务器测试API"
    UserConsentDescription = "授予对服务器测试API的访问权限"
    IsEnabled = $true
}

# 更新服务器应用,添加定义好的API范围
Set-AzADApplication -ApplicationId $serverApp.ApplicationId `
    -OAuth2PermissionScope $apiScope
  • IdentifierUris就是门户中"API"标签下的应用程序ID URI,格式为api://<唯一标识>
  • OAuth2PermissionScope里的Id是该API范围的唯一标识符,Type控制同意权限类型

3. 创建单租户客户端应用并生成24个月密钥

# 等待10秒确保服务器应用配置生效
Start-Sleep -Seconds 10

# 创建单租户客户端应用注册
$clientApp = New-AzADApplication -DisplayName "Connection (Client, Test)" `
    -SignInAudience "AzureADMyOrg"

# 生成有效期24个月的客户端密钥
$startDate = Get-Date
$endDate = $startDate.AddMonths(24)
$clientSecret = New-AzADAppCredential -ApplicationId $clientApp.ApplicationId `
    -StartDate $startDate `
    -EndDate $endDate

# 注意:密钥仅在此处显示一次,请妥善保存
Write-Host "客户端应用密钥:$($clientSecret.SecretText)"

4. 将客户端应用关联到服务器应用的授权范围

解决Add-AzADAppPermission的参数对应问题:

# 获取服务器应用的API范围ID
$serverAppScopes = Get-AzADApplication -ApplicationId $serverApp.ApplicationId | Select-Object -ExpandProperty OAuth2PermissionScope
$targetScopeId = $serverAppScopes | Where-Object { $_.Value -eq "API.Access" } | Select-Object -ExpandProperty Id

# 给客户端应用添加服务器API权限
New-AzADAppPermission -ApplicationId $clientApp.ApplicationId `
    -PermissionId $targetScopeId `    # 对应API范围的唯一ID
    -PermissionType "Scope" `         # 类型为Scope,表示是API范围权限
    -ResourceId $serverApp.ClientId   # 对应服务器应用的"应用程序(客户端)ID"

# 授予管理员同意(需当前账号有管理员权限)
Grant-AzADAppPermission -ApplicationId $clientApp.ApplicationId `
    -PermissionId $targetScopeId `
    -PermissionType "Scope" `
    -ResourceId $serverApp.ClientId

5. 配置客户端应用的Web重定向URI与隐式流

# 替换为你的实际Web重定向URI
$redirectUris = @("https://localhost:5001/signin-oidc")

# 启用隐式流的访问令牌和ID令牌
$oauthSettings = @{
    ImplicitGrant = @{
        EnableIdTokenIssuance = $true
        EnableAccessTokenIssuance = $true
    }
}

# 更新客户端应用配置
Set-AzADApplication -ApplicationId $clientApp.ApplicationId `
    -Web @{ RedirectUri = $redirectUris } `
    -OAuth2PermissionGrant $oauthSettings

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 18:17:32