man*_*b86 3 c# azure azure-active-directory asp.net-core-webapi microsoft-graph-api
我想知道用户在 AAD 中所属的组列表。根据组的成员资格,他们可以执行另一项功能。为了实现此目的,我使用了 MS Graph API,但我只获得组 ID,而不是组名称。我使用图 API 使用了以下两种方式。使用的第一种方法,
await graphClient.Users[upn].GetMemberGroups(false).Request().PostAsync()
Run Code Online (Sandbox Code Playgroud)
回复:
[ "fee2c45b-915a-4a64-b130-f4eb9e75525e", "4fe90ae7-065a-478b-9400-e0a0e1cbd540", "e0c3beaf-eeb4-43d8-abc5-94f037a65697" ]
Run Code Online (Sandbox Code Playgroud)
使用的第二种方法,
await graphClient.Users[upn].MemberOf.Request().GetAsync();
Run Code Online (Sandbox Code Playgroud)
回复:
[
{
"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": [
[]
]
}
}
]
Run Code Online (Sandbox Code Playgroud)
我需要的是组名称和组 ID。我如何以有效的方式将两者结合在一起?或者我可以为此目的尝试其他方法吗?
对我来说,以下方法可以获取组名称:
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;
Run Code Online (Sandbox Code Playgroud)
如果允许的话(例如),组的响应中应该有一个 DisplayName/displayName Directory.Read.All。
| 归档时间: |
|
| 查看次数: |
7905 次 |
| 最近记录: |