azure 如何使用Microsoft Graph API获取用户的组名?

j5fpnvbx  于 2023-08-07  发布在  其他
关注(0)|答案(1)|浏览(142)

我想知道用户在AAD中所属的组列表。基于组的成员资格,它们可以执行另一个功能。为了实现这一点,我使用了MS Graph API,但我只得到组ID,而不是组名。我使用了以下两种方式使用图形API。使用的第一种方法,

await  graphClient.Users[upn].GetMemberGroups(false).Request().PostAsync()

字符串
回复:

[ "fee2c45b-915a-4a64-b130-f4eb9e75525e", "4fe90ae7-065a-478b-9400-e0a0e1cbd540", "e0c3beaf-eeb4-43d8-abc5-94f037a65697" ]


使用的第二种方法,

await  graphClient.Users[upn].MemberOf.Request().GetAsync();


回复:

[
    {
        "deletedDateTime": null,
        "id": "1c4934554-5006-403a-bf4f-bsdfeerwfs6fe6f",
        "oDataType": "#microsoft.graph.group",
        "additionalData": {
            "creationOptions": [],
            "isAssignableToRole": null,
            "resourceBehaviorOptions": [],
            "resourceProvisioningOptions": []
        }
    },
    {
        "deletedDateTime": null,
        "id": "f8975c2f-7651d-4f3a-1234-4ec3808a0ac2",
        "oDataType": "#microsoft.graph.group",
        "additionalData": {
            "creationOptions": [
                []
            ],
            "isAssignableToRole": null,
            "resourceBehaviorOptions": [],
            "resourceProvisioningOptions": [
                []
            ]
        }
    }
]


我需要的是组名和组ID。如何以有效的方式将两者结合起来?或者有没有其他方法可以尝试达到这个目的?

7cjasjjr

7cjasjjr1#

对我来说,以下方法可以获取组名:

var page = await graphClient
    .Users[userObjectId]
    .MemberOf
    .Request()
    .GetAsync();

var names = new List<string>();
names.AddRange(page
        .OfType<Group>()
        .Select(x => x.DisplayName)
        .Where(name => !string.IsNullOrEmpty(name)));
while (page.NextPageRequest != null)
{
    page = await page.NextPageRequest.GetAsync();
    names.AddRange(page
        .OfType<Group>()
        .Select(x => x.DisplayName)
        .Where(name => !string.IsNullOrEmpty(name)));
}

return names;

字符串
如果允许,组的响应中应包含DisplayName/displayName(例如Directory.Read.All)。

相关问题