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

通过Microsoft Graph创建的Azure AD应用注册未在门户显示问题

问题原因与解决方案

我来帮你拆解这个问题——这本质上是Azure Portal手动创建应用和Microsoft Graph API创建应用时的默认配置差异触发了门户的显示过滤逻辑,具体和你提到的几个属性直接相关:

1. orgRestrictions 属性是核心原因

当你在Azure Portal手动创建单租户应用时,系统会自动把当前租户的ID填充到orgRestrictions数组里,这个属性是单租户应用的关键标识之一,用来限制应用只能被你的租户内用户访问。

但通过POST /beta/applications接口创建应用时,除非你显式指定这个属性,否则它的默认值是空数组[]。而Azure Portal的应用注册列表默认会优先展示那些orgRestrictions包含当前租户ID的应用,空数组的应用会被过滤掉,所以你在门户里看不到,但Graph API能查到(因为API不会做这个过滤)。

2. publisherDomain 与 acceptedAccessTokenVersion的辅助影响

  • publisherDomain:手动创建的应用默认是null,这是因为门户创建流程会延迟设置这个属性;而Graph API会自动填充你的租户默认域名。当这个属性存在且orgRestrictions为空时,门户可能误判应用为“跨租户发布的应用”,进一步导致显示异常。
  • acceptedAccessTokenVersion:这个是AccessToken的版本差异,手动创建默认用版本1(null),Graph API默认用版本2,这个不影响门户显示,但也是需要注意的配置差异点。

解决方法

在调用Graph API创建应用时,显式配置orgRestrictions和signInAudience属性,匹配门户手动创建的单租户应用配置:

请求示例

POST /beta/applications
Content-Type: application/json

{
  "displayName": "你的应用名称",
  "signInAudience": "AzureADMyOrg", // 明确指定为单租户
  "orgRestrictions": ["你的租户ID-GUID"], // 填充当前租户ID
  "api": {
    "acceptedAccessTokenVersion": null // 可选,和手动创建保持一致
  }
}

另外,你也可以临时在Azure Portal中切换到所有应用注册视图(而非默认的“我的应用”),这里会展示租户内所有应用注册,包括你用Graph API创建的那些——不过最根本的解决方式还是让Graph API创建的应用属性和手动创建的保持一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 09:00:40