【问题标题】:Querying AzureAD Graph extension attributes with Microsoft Graph使用 Microsoft Graph 查询 AzureAD Graph 扩展属性
【发布时间】:2021-02-04 17:18:39
【问题描述】:

我正在从 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

但这似乎与 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

这不会为用户返回自定义扩展数据(但是其他属性可以正常工作)。

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

【问题讨论】:

    标签: c# azure azure-active-directory microsoft-graph-api azure-ad-graph-api


    【解决方案1】:

    SchemaExtensionsextensionProperty 不同。您提到的应该是 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();
    

    【讨论】:

    • 谢谢,这看起来正是我所需要的。它是否仅在 /me/ 端点上可用?我在调用列表端点/applications/{id]/extenstionProperties时收到错误Request_ResourceNotFound
    • @DGibbs 当{id} 不正确时会发生此错误。它应该是应用注册的对象 id(不是应用程序 id)。请检查。
    • 是的,这是我的问题,非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    相关资源
    最近更新 更多