使用 Microsoft Graph API 检索 Azure AD 应用程序的用户详细信息和角色

2024-05-04

我正在尝试使用 Microsoft Graph API 获取 Azure AD 中特定企业应用程序的用户详细信息。

我能够使用以下命令成功检索应用程序的用户:

https://graph.microsoft.com/v1.0/servicePrincipals/{objectId}/appRoleAssignedTo

然而,用户的详细信息被遗漏了;例如联系方式、电子邮件。对于分配给用户的每个角色,它还有一个重复条目。

如果我查询,我可以获得这些用户详细信息:

https://graph.microsoft.com/v1.0/users

但是,这会检索组织中的所有用户,并且我未能成功过滤给定应用程序的查询中的列表。

使用 $expand 运算符似乎也没有实现。

看起来这将是应用程序的常见用例;我的用户是谁?他们的角色和详细信息是什么?如何使用 Graph API 最好地解决这一问题?


就个人而言,

您可以获得使用以下查询的 Azure AD 应用程序的。

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

这将返回分配了应用程序角色的所有用户和组,您可以从这些用户和组中提取主体 ID应用程序角色分配对象 https://learn.microsoft.com/en-us/graph/api/resources/approleassignment?view=graph-rest-1.0#properties如下所示,它们只是分配角色的用户的用户 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相应调用用户端点或组端点。

Get https://graph.microsoft.com/v1.0/users/4ef105cc-508b-41c4-a5d2-7d41f2244c4c //principalId

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Microsoft Graph API 检索 Azure AD 应用程序的用户详细信息和角色 的相关文章

随机推荐