如何在 Graph 中使用 appRoleAssignment Api

How to use appRoleAssignment in Graph Api

我正在尝试利用测试版 api 将 azure 用户分配给应用程序。

我查看了文档并使用 HttpClientWebClient 在 C# 控制台应用程序中尝试了多种尝试,但都没有成功。然后我去了 Microsoft graph explorer https://developer.microsoft.com/en-us/graph/graph-explorer 。我无法让它工作。

我看了文档 https://developer.microsoft.com/en-us/graph/docs/api-reference/beta/api/approleassignment_get

与示例不匹配的 HTTP 请求的文档的实际文档。 Graph Explorer 似乎暗示示例是正确的,但通过各种尝试,我只能得到

的响应
{
    "error": {
        "code": "Request_UnsupportedQuery",
        "message": "Direct queries to this resource type are not supported.",
        ...
    }
}

我的基本 url 是 https://graph.microsoft.com/beta/appRoleAssignments/

示例说 {id} 但我不知道要输入什么。我输入了几个 guid、用户 ID、对象 ID、资源 ID,并且 none 有效。

它没有说任何访问被拒绝的消息,所以我认为它与作用域无关(尽管关于它的文档也有点空)。

理想情况下,我能够查看给定的来宾 Azure 用户是否有权访问特定的应用程序,然后我就能够去更新分配。我可能还需要删除作业。

在新的 Azure 门户中,在 "Enterprise applications" > (your app) > "Users and groups" 下,您将看到分配给应用程序的用户列表,以及他们分配给的应用程序角色。测试后,您可以使用 Microsoft Graph API 请求做同样的事情:

https://graph.microsoft.com/beta/servicePrincipals/d0790296-0a14-4ab1-8f6c-4e4d3eb03036/appRoleAssignments

您可以在 "Enterprise applications" > (your app) >Properties>Object ID 下获得服务主体。这是响应示例:

id是角色id,在你的场景中,当principalId匹配特定用户的对象id时,你可以检查记录是否存在,而principalTypeuser.

[编辑 (2021-07-06):所有这些都使用 Microsoft Graph v1.0。]

Microsoft Graph API 的 beta 端点目前似乎不允许您列出 AppRoleAssignments。

[编辑 (2018-10-11):Microsoft Graph beta 端点现在支持列出 AppRoleAssignments 的功能,但您仍应将 Azure AD Graph 用于任何生产应用程序,直到它到达v1.0.] 幸运的是,Azure AD Graph API 确实 为此工作(另外,它不是测试端点,因此它更有可能稳定)。

列出为用户分配了 Microsoft Graph 的所有应用角色:

https://graph.microsoft.com/v1.0/users/{id}/appRoleAssignments

要列出分配给组的所有应用角色:

https://graph.microsoft.com/v1.0/groups/{id}/appRoleAssignments

反之,列出分配给某个应用的所有用户或组:

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

Azure AD Graph is deprecated and all support for it will cease in June 2022. 等效的请求是(与上面的顺序相同):

https://graph.windows.net/{tenant-id}/users/{id}/appRoleAssignments?api-version=1.6
https://graph.windows.net/{tenant-id}/groups/{id}/appRoleAssignments?api-version=1.6
https://graph.windows.net/{tenant-id}/servicePrincipals/{id}/appRoleAssignedTo?api-version=1.6