使用 Microsoft Graph 查询 AzureAD Graph 扩展属性

Querying AzureAD Graph extension attributes with Microsoft Graph

我正在从 Azure AD Graph API 迁移到 Microsoft Graph,因为它现在已被弃用。以前可以使用 Microsoft.Azure.ActiveDirectory.GraphClient .GetExtendedProperties(); 调用访问针对用户的扩展属性,例如:

var client = new ActiveDirectoryClient(serviceRoot, async () => await GetToken());
var user = await client.Users["user id..."].ExecuteAsync();
var properties = user.GetExtendedProperties();

我需要在 Microsoft Graph.

中使用等效调用来复制它

我查看了 schemaExtensions 端点,例如:

获取所有扩展:

/v1.0/schemaExtensions

但这似乎 return 与 AD Graph 客户端所做的相同的扩展数据。

获取分机用户:

v1.0/users/[user id]?$expand=extensions&$select=id,extension_[application id]_myExtension,onPremisesExtensionAttributes,displayName,jobTitle,identities

其中 extension_[application id]_myExtension 是格式的示例扩展:

extension_appid_extensionname

这不是 return 用户的自定义扩展数据(但其他属性工作正常)。

我们如何将扩展属性从 AD Graph Client 迁移到 Microsoft Graph?

SchemaExtensions 不同于 extensionProperty。你说的应该是Microsoft Graph中的extensionProperty

您可以使用 List extensionProperties 获取所有扩展。

你的要求v1.0/users/[user id]?$expand=extensions&$select=id,extension_[application id]_myExtension,onPremisesExtensionAttributes,displayName,jobTitle,identities应该是正确的。

请确保 application id 应该删除所有 -。扩展 属性 格式为 extension_[application id without "-"]_myExtension.

例如:

GET https://graph.microsoft.com/v1.0/me?$select=id,extension_6d****fbf1fe4bc38a5a145520****89_policy,displayName

回复:

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users(id,extension_6d****fbf1fe4bc38a5a145520****89_policy,displayName)/$entity",
    "id": "98****c9-f062-48e2-8ced-22cb68****ce",
    "displayName": "Allen Wu",
    "extension_6d****fbf1fe4bc38a5a145520****89_policy": "readwrite"
}

C# 代码示例:

var user = await graphClient.Users["98****c9-f062-48e2-8ced-22cb6****ce"]
    .Request()
    .Select("id,extension_6d****fbf1fe4bc38a5a145520****89_policy,displayName")
    .GetAsync();