使用 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

如果您有任何疑问,请告诉我。