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

使用Microsoft Graph创建的ServicePrincipal未在AAD企业应用中显示,求解决

问题:通过代码创建的服务主体在Azure AD企业应用中无法显示

我通过代码创建应用注册(Application)和服务主体(ServicePrincipal),服务主体确实已创建,但在Azure AD管理中心的“企业应用”列表里找不到它。

我已经为应用添加了User.Read权限,因为之前看到提示说服务主体需要具备权限才会显示为企业应用。同时我也将ServicePrincipalType设置为了“Application”,对照文档确认这是正确的类型,而且我验证过能在“企业应用”中显示的服务主体类型确实是Application。

以下是我使用的代码:

var microsoftGraphAppId = "00000003-0000-0000-c000-000000000000";

var microsoftGraphServicePrinciple = _graphClient.ServicePrincipals.Request().Filter($"appId eq '{microsoftGraphAppId}'").GetAsync().Result.First();

var user_read_id = microsoftGraphServicePrinciple.Oauth2PermissionScopes.First(p => p.Value == "User.Read").Id;

var newApplication = new Application
{
    DisplayName = $"TestApp - {DateTime.Now.ToShortTimeString()}",
    SignInAudience = "AzureADMyOrg",
    RequiredResourceAccess = new List<RequiredResourceAccess>
    {
        new RequiredResourceAccess
        {
            ResourceAppId = microsoftGraphAppId,
            ResourceAccess = new List<ResourceAccess>
            {
                new ResourceAccess
                {
                    Id = user_read_id,
                    Type = "Scope"
                }
            }
        }
    },
};
var application = _graphClient.Applications.Request().AddAsync(newApplication).Result;

var newServicePrincipal = new ServicePrincipal
{
    AppId = application.AppId,
    ServicePrincipalType = "Application",
};
var servicePrincipal = _graphClient.ServicePrincipals.Request().AddAsync(newServicePrincipal).Result;

可能的原因及解决方案

1. 界面同步延迟

Azure AD管理中心的界面数据存在同步延迟,刚创建的服务主体不会立刻显示。等待5-10分钟后刷新页面,再查看“企业应用”列表。

2. 筛选条件限制

检查管理中心的筛选设置:

  • 确保在“企业应用”页面的筛选器中选择了所有应用,而非“已配置的应用”或其他限定条件。

3. 服务主体属性缺失

手动创建服务主体时,建议显式启用账户属性,避免默认配置异常:
修改服务主体创建代码,添加AccountEnabled = true:

var newServicePrincipal = new ServicePrincipal
{
    AppId = application.AppId,
    ServicePrincipalType = "Application",
    AccountEnabled = true // 显式启用服务主体账户
};
var servicePrincipal = _graphClient.ServicePrincipals.Request().AddAsync(newServicePrincipal).Result;

4. 无需手动创建服务主体

创建应用注册(Application)时,Azure AD会自动生成对应的服务主体,无需手动调用ServicePrincipals.Request().AddAsync()。手动创建可能导致重复实体或属性不匹配,建议删除手动创建服务主体的代码,仅保留应用注册创建逻辑。

内容的提问来源于stack exchange,提问作者E. Hekkert

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 13:22:55