AAD MSGraph - 如何查看哪些组附加到AAD连接的应用程序?

时间:2018-01-18 18:10:54

标签: c# azure-active-directory

我有一个C#Web应用程序,我们的业务用它来邀请访客用户访问我们的AAD并将用户分组。

我们使用这个C#Web应用程序而不是门户网站,因为它以更友好的方式向业务呈现数据,支持工作流程,可以对输入的数据进行一些审核,自定义邀请电子邮件消息等。

为了支持这个应用程序,我必须在我的应用程序本地配置中维护AAD组对象ID到AAD App对象ID的映射。实际上我的应用程序并没有真正使用任何AAD概念的应用程序。

有没有办法可以减轻我的配置,更有活力?我想放弃我的组列表,而是向AAD询问连接到我关心的每个应用程序的组。

我刚开始看

https://developer.microsoft.com/en-us/graph/docs/api-reference/beta/resources/approleassignment

但是我不太明白如何将不同的调用链接在一起以获取组oid的列表..

感谢任何建议/指导。

1 个答案:

答案 0 :(得分:1)

你走在正确的轨道上。要查找分配给应用的用户,您需要获取应用程序服务主管的应用角色分配。

假设您知道您的服务主体的对象ID:

https://graph.microsoft.com/beta/servicePrincipals/eea0d6cd-20e2-aaaa-97ca-5b0cbffac985/appRoleAssignments

这在v1.0端点上不可用,只有MS Graph API的测试版。由于生产中不支持beta,因此您还可以在Azure AD Graph API中访问基本相同的URL(将API集成到MS Graph API中)。

以下是一个示例回复:

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#appRoleAssignments",
    "value": [
        {
            "id": "JYrDc-sj60S_Y0qph7LvGf1WEjyOr5NKvhK_v1NTME8",
            "creationTimestamp": null,
            "principalDisplayName": "Test User",
            "principalId": "73c38a25-23eb-aaaa-bf63-4aa987b2ef19",
            "principalType": "User",
            "resourceDisplayName": "My App",
            "resourceId": "eea0d6cd-20e2-aaaa-97ca-5b0cbffac985"
        },
        {
            "id": "aLvuP_x1q0GACPZxznTP9w24cypievFBrGx-mNsCWGE",
            "creationTimestamp": "2017-01-26T19:33:48.8356667Z",
            "principalDisplayName": "Another User",
            "principalId": "3feebb68-75fc-aaaa-8008-f671ce74cff7",
            "principalType": "User",
            "resourceDisplayName": "My App",
            "resourceId": "eea0d6cd-20e2-aaaa-97ca-5b0cbffac985"
        }
    ]
}

现在我的免费AAD不允许分组,所以这里只有用户分配。但唯一的区别是principalType将是"Group",而principalId将是组对象ID。

如果您不知道服务主体对象ID ,您可以使用此应用的客户端ID来获取它:

https://graph.microsoft.com/beta/servicePrincipals?$filter=appId eq '1c9fdc91-aaaa-aaaa-af8d-027507190f41'

这在v1.0端点中也不起作用。

Azure AD Graph API的URL将是:

https://graph.windows.net/tenant-id/servicePrincipals/eea0d6cd-20e2-aaaa-97ca-5b0cbffac985/appRoleAssignments?api-version=1.6

并通过客户端ID获取服务主体对象id:

https://graph.windows.net/tenant-id/servicePrincipalsByAppId/1c9fdc91-aaaa-aaaa-af8d-027507190f41/objectId?api-version=1.6

tenant-id 替换为您的Azure AD租户ID或经过验证的域,例如myorg.onmicrosoft.com。