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

Azure AD应用添加可选声明后未在清单中生效求助

问题分析与解决

你的代码存在几个关键问题,导致可选声明无法在Azure AD应用清单中生效:

  1. 重复JSON序列化导致格式错误
    你连续执行了两次ConvertTo-Json,第一次已将对象转为压缩后的JSON字符串,第二次会把这个字符串再次转成JSON,最终得到的是被转义的字符串,而非Azure CLI所需的JSON对象结构。

  2. 变量引用被单引号包裹无法解析
    在az ad app update命令中,你用单引号'$optionalClaims'包裹变量,PowerShell中单引号不会展开变量,导致实际传递给CLI的是字符串$optionalClaims,而非变量存储的JSON值。

  3. essential属性类型错误
    Azure AD要求essential是布尔类型(true/false),但你设置的是字符串"true",不符合格式要求。

  4. 命令参数格式错误
    --id和$($application.appId)之间缺少空格,CLI无法正确识别参数值。


修正后的代码

# 构建idToken声明数组,注意essential为布尔值
$idTokenClaim = @(
    [PSCustomObject]@{
        name = "upn"
        source = $null
        essential = $true
        additionalProperties = @()
    }
)

# 构建可选声明对象并仅序列化一次JSON
$optionalClaims = @{
    idToken     = $idTokenClaim
    accessToken = @()
    saml2Token  = @()
} | ConvertTo-Json -Compress

# 执行Azure CLI命令,修正参数空格与变量引用方式
az ad app update --id $($application.appId) --optional-claims "$optionalClaims"

验证方法

执行命令后,可通过以下方式确认修改是否生效:

  • 登录Azure门户,找到对应应用注册的清单页面,查看optionalClaims字段是否已正确填充
  • 使用Azure CLI命令查询:
az ad app show --id $($application.appId) --query "optionalClaims"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 05:50:28