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

通过脚本在Microsoft Entra应用注册中暴露API遇阻求助

解决Microsoft Entra应用注册暴露API的Azure CLI脚本问题

核心问题梳理

你遇到的错误(属性不属于架构、标识符URL无效、资源未定义)主要源于三个关键点:

  • API配置文件格式不符合Entra应用架构规范
  • 标识符URI设置时机或格式有误
  • 租户中未预创建Microsoft Azure CLI服务主体(ID: 04b07795-8ddb-461a-bbee-02f9e1bf7b46)

修正后的完整脚本

appregname="YourAppDisplayName"

# 1. 创建应用注册并获取Client ID
clientid=$(az ad app create --display-name "$appregname" --query appId --output tsv)

# 2. 设置唯一标识符URI(格式为api://<ClientID>,确保租户内无重复)
az ad app update --id "$clientid" --identifier-uris "api://$clientid"

# 3. 添加Microsoft Graph的User.Read委托权限
az ad app permission add --id "$clientid" --api 00000003-0000-0000-c000-000000000000 --api-permissions e1fe6dd8-ba31-4d61-89e7-88639da4683d=Scope

# 4. 创建应用对应的服务主体
az ad sp create --id "$clientid" --output tsv

# 5. 预创建Microsoft Azure CLI服务主体(解决租户找不到该资源的问题)
az ad sp create --id 04b07795-8ddb-461a-bbee-02f9e1bf7b46 --output tsv || echo "Microsoft Azure CLI服务主体已存在"

# 6. 更新API暴露配置(需确保api.json格式正确)
az ad app update --id "$clientid" --set api=@api.json

# 7. 单独更新服务主体锁定配置(该属性不属于应用注册的API节点)
az ad sp update --id "$clientid" --set servicePrincipalLockConfiguration="{\"lockAll\": false}"

关键配置说明

1. 正确的api.json格式

api节点仅包含API暴露相关配置,不要将servicePrincipalLockConfiguration放入其中,示例如下:

{
  "oauth2PermissionScopes": [
    {
      "adminConsentDescription": "允许管理员访问应用全部功能",
      "adminConsentDisplayName": "访问应用全部功能",
      "id": "生成唯一GUID(如用uuidgen命令)",
      "isEnabled": true,
      "type": "User",
      "userConsentDescription": "允许你访问应用全部功能",
      "userConsentDisplayName": "访问应用全部功能",
      "value": "user_impersonation"
    }
  ],
  "preAuthorizedApplications": []
}

注意:oauth2PermissionScopes中的id必须是新生成的唯一GUID,不能重复使用其他应用的ID。

2. 错误原因对应修复

  • 属性不属于架构:servicePrincipalLockConfiguration是服务主体(servicePrincipal)的属性,需用az ad sp update单独设置,不能放入应用注册的api节点中。
  • 标识符URL缺少选项:确保标识符URI格式为api://<ClientID>,且在租户内唯一,避免与其他应用重复。
  • 资源未定义:执行az ad sp create --id 04b07795-8ddb-461a-bbee-02f9e1bf7b46手动创建Microsoft Azure CLI的服务主体,该ID为公共云环境下的固定值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 04:55:53