首页 > 解决方案 > Azure AD - 仅使用 MS Graph SDK 为我自己的租户列出 schemaExtensions

问题描述

我正在研究可怕的 MS Docs,同时弄清楚如何创建和列出为我自己的租户创建的架构扩展。

列出 schemaExtensions

MS Docs 提供了如何通过 MS Graph SDK 列出架构扩展的示例,但是结果返回来自其他开发人员和应用程序的扩展。MS 说明实际上确实建议以下内容:

注意:该列表还将包含由其他租户的其他开发人员创建的架构扩展定义(标记为可用)。这与仅返回特定于租户的数据的其他 API 不同。基于架构扩展定义创建的扩展数据是特定于租户的,并且只能由明确授予权限的应用访问。

首先,我到底为什么要列出其他人创建的扩展程序?我只想列出为我自己的应用程序/租户创建的扩展,但不明白如何执行此操作?我找不到 Graph SDK 的示例,它显示了如何仅为我自己创建的扩展返回结果。

到目前为止,我正在使用上述链接中的 MS 示例,其中一个通用的结果列表结果从每个人和他的狗返回了超过 100 个不同的扩展名!

GraphServiceClient graphClient = new GraphServiceClient( authProvider );

var schemaExtensions = await graphClient.SchemaExtensions
    .Request()
    //.Filter("id eq 'graphlearn_test'") // this would only work for returning one particular extension, I want to list all extensions created only for my own app/tenant
    .GetAsync();

标签: c#azure-active-directoryazure-ad-graph-apimicrosoft-graph-sdks

解决方案


在创建扩展期间,您可以指定作为模式扩展所有者的应用程序的owner属性。appId

默认情况下,调用应用程序appId将被设置为所有者。但是,可以在创建时提供该属性,以将所有者设置为appId与调用应用程序不同的内容。设置后,此属性为只读且无法更改。

owner然后,您可以按属性过滤扩展名。

GraphServiceClient graphClient = new GraphServiceClient( authProvider );

var schemaExtensions = await graphClient.SchemaExtensions
    .Request()
    .Filter("owner eq 'your_app_id'")
    .GetAsync();

推荐阅读