使用 Microsoft Graph API 检索 Azure AD 应用程序的用户详细信息和角色
Retrieve User Details and Roles for an Azure AD application using Microsoft Graph API
我正在尝试使用 Microsoft Graph API.
获取 Azure AD 中特定企业应用程序的用户详细信息
我能够使用以下方法成功检索应用程序的用户:
https://graph.microsoft.com/v1.0/servicePrincipals/{objectId}/appRoleAssignedTo
但是,用户的详细信息被遗漏了;例如,联系方式、电子邮件。对于分配给用户的每个角色,它也有一个重复的条目。
如果我查询,我可以获得这些用户详细信息:
https://graph.microsoft.com/v1.0/users
但是,这会检索组织中的所有用户,但我未能成功过滤给定应用程序查询中的列表。
使用 $expand 运算符似乎也没有实现。
这似乎是应用程序的常见用例;谁是我的用户,他们的角色和详细信息是什么?如何最好地使用图表 API 来解决这个问题?
个人,
您可以使用以下查询获取 Azure AD 应用程序的 appRoles。
https://graph.microsoft.com/v1.0/serviceprincipals/07fce81e-8069-4ccb-9775-63f96d1f4e53
并检查 appRoles 属性。
您可以使用以下查询获取用户详细信息。
https://graph.microsoft.com/v1.0/users/4ef105cc-508b-41c4-a5d2-7d41f2244c4c
您可以使用以下查询获取群组详细信息。
https://graph.microsoft.com/v1.0/groups/0023c709-3556-4296-a6ab-6df2a0a1113c
在你的情况下,你需要调用你指定的同一个调用
https://graph.microsoft.com/v1.0/servicePrincipals/07fce81e-8069-4ccb-9775-63f96d1f4e53/appRoleAssignedTo
这将 return 所有用户和组分配应用程序角色,您可以从这些 app role assignment objects 中提取主体 ID,如下所示,它只不过是角色所在用户的用户 ID分配给组的情况下,它是组的组 ID,它提供了组的详细信息。
您可以按主体类型区分用户和组,并根据它调用上述 http 调用(用户或组)并获取这些详细信息。
重复的需要在我们这边编码来避免。
我的例子JSON数据:-
For getting users and groups assigned app roles
GET https://graph.microsoft.com/v1.0/servicePrincipals/07fce81e-8069-4ccb-9775-63f96d1f4e53/appRoleAssignedTo
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#servicePrincipals('07fce81e-8069-4ccb-9775-63f96d1f4e53')/appRoleAssignedTo",
"value": [
{
"id": "zAXxTotQxEGl0n1B8iRMTPwz3O48iw9Oq3aFtqfYVjA",
"deletedDateTime": null,
"appRoleId": "00000000-0000-0000-0000-000000000000",
"createdDateTime": "2020-06-01T19:21:01.4268687Z",
"principalDisplayName": "Nishant Singh",
"principalId": "4ef105cc-508b-41c4-a5d2-7d41f2244c4c",
"principalType": "User",
"resourceDisplayName": "testspaquestion",
"resourceId": "07fce81e-8069-4ccb-9775-63f96d1f4e53"
},
{
"id": "Y3tbwNOvDkqKK9yLxJ5wp2-uBAbApk9LoMs6AN_7iSs",
"deletedDateTime": null,
"appRoleId": "00000000-0000-0000-0000-000000000000",
"createdDateTime": "2020-06-01T18:47:47.2702435Z",
"principalDisplayName": "Sruthi J",
"principalId": "c05b7b63-afd3-4a0e-8a2b-dc8bc49e70a7",
"principalType": "User",
"resourceDisplayName": "testspaquestion",
"resourceId": "07fce81e-8069-4ccb-9775-63f96d1f4e53"
},
{
"id": "CccjAFY1lkKmq23yoKERPBqNLldhOdBAm0lJzewK0Nk",
"deletedDateTime": null,
"appRoleId": "00000000-0000-0000-0000-000000000000",
"createdDateTime": "2020-07-23T17:34:53.9538274Z",
"principalDisplayName": "Bgroup",
"principalId": "0023c709-3556-4296-a6ab-6df2a0a1113c",
"principalType": "Group",
"resourceDisplayName": "testspaquestion",
"resourceId": "07fce81e-8069-4ccb-9775-63f96d1f4e53"
}
]
}
查询完以上,拉取每条记录的principalid,根据principaltype调用user endpoint或group endpoint。
Get https://graph.microsoft.com/v1.0/users/4ef105cc-508b-41c4-a5d2-7d41f2244c4c //principalId
如果您有任何疑问,请告诉我。
我正在尝试使用 Microsoft Graph API.
获取 Azure AD 中特定企业应用程序的用户详细信息我能够使用以下方法成功检索应用程序的用户:
https://graph.microsoft.com/v1.0/servicePrincipals/{objectId}/appRoleAssignedTo
但是,用户的详细信息被遗漏了;例如,联系方式、电子邮件。对于分配给用户的每个角色,它也有一个重复的条目。
如果我查询,我可以获得这些用户详细信息:
https://graph.microsoft.com/v1.0/users
但是,这会检索组织中的所有用户,但我未能成功过滤给定应用程序查询中的列表。
使用 $expand 运算符似乎也没有实现。
这似乎是应用程序的常见用例;谁是我的用户,他们的角色和详细信息是什么?如何最好地使用图表 API 来解决这个问题?
个人,
您可以使用以下查询获取 Azure AD 应用程序的 appRoles。
https://graph.microsoft.com/v1.0/serviceprincipals/07fce81e-8069-4ccb-9775-63f96d1f4e53
并检查 appRoles 属性。
您可以使用以下查询获取用户详细信息。
https://graph.microsoft.com/v1.0/users/4ef105cc-508b-41c4-a5d2-7d41f2244c4c
您可以使用以下查询获取群组详细信息。
https://graph.microsoft.com/v1.0/groups/0023c709-3556-4296-a6ab-6df2a0a1113c
在你的情况下,你需要调用你指定的同一个调用
https://graph.microsoft.com/v1.0/servicePrincipals/07fce81e-8069-4ccb-9775-63f96d1f4e53/appRoleAssignedTo
这将 return 所有用户和组分配应用程序角色,您可以从这些 app role assignment objects 中提取主体 ID,如下所示,它只不过是角色所在用户的用户 ID分配给组的情况下,它是组的组 ID,它提供了组的详细信息。
您可以按主体类型区分用户和组,并根据它调用上述 http 调用(用户或组)并获取这些详细信息。
重复的需要在我们这边编码来避免。
我的例子JSON数据:-
For getting users and groups assigned app roles
GET https://graph.microsoft.com/v1.0/servicePrincipals/07fce81e-8069-4ccb-9775-63f96d1f4e53/appRoleAssignedTo
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#servicePrincipals('07fce81e-8069-4ccb-9775-63f96d1f4e53')/appRoleAssignedTo",
"value": [
{
"id": "zAXxTotQxEGl0n1B8iRMTPwz3O48iw9Oq3aFtqfYVjA",
"deletedDateTime": null,
"appRoleId": "00000000-0000-0000-0000-000000000000",
"createdDateTime": "2020-06-01T19:21:01.4268687Z",
"principalDisplayName": "Nishant Singh",
"principalId": "4ef105cc-508b-41c4-a5d2-7d41f2244c4c",
"principalType": "User",
"resourceDisplayName": "testspaquestion",
"resourceId": "07fce81e-8069-4ccb-9775-63f96d1f4e53"
},
{
"id": "Y3tbwNOvDkqKK9yLxJ5wp2-uBAbApk9LoMs6AN_7iSs",
"deletedDateTime": null,
"appRoleId": "00000000-0000-0000-0000-000000000000",
"createdDateTime": "2020-06-01T18:47:47.2702435Z",
"principalDisplayName": "Sruthi J",
"principalId": "c05b7b63-afd3-4a0e-8a2b-dc8bc49e70a7",
"principalType": "User",
"resourceDisplayName": "testspaquestion",
"resourceId": "07fce81e-8069-4ccb-9775-63f96d1f4e53"
},
{
"id": "CccjAFY1lkKmq23yoKERPBqNLldhOdBAm0lJzewK0Nk",
"deletedDateTime": null,
"appRoleId": "00000000-0000-0000-0000-000000000000",
"createdDateTime": "2020-07-23T17:34:53.9538274Z",
"principalDisplayName": "Bgroup",
"principalId": "0023c709-3556-4296-a6ab-6df2a0a1113c",
"principalType": "Group",
"resourceDisplayName": "testspaquestion",
"resourceId": "07fce81e-8069-4ccb-9775-63f96d1f4e53"
}
]
}
查询完以上,拉取每条记录的principalid,根据principaltype调用user endpoint或group endpoint。
Get https://graph.microsoft.com/v1.0/users/4ef105cc-508b-41c4-a5d2-7d41f2244c4c //principalId
如果您有任何疑问,请告诉我。