使用图形API以编程方式将用户分配给Azure AD应用程序
问题描述:
我正在尝试编写一个脚本来使用Graph API将用户分配给Azure AD应用程序(servicePrincipal)。我正在测试这个在我的沙箱中,我已经定义了应用程序并为其分配了用户。但是,当我查询servicePrincipal
时,我在响应中的任何地方都看不到用户。使用图形API以编程方式将用户分配给Azure AD应用程序
问题:基于documentation
,不应该有
appRoleAssignment
?-
该文档说这个字段是只读的,那么您应如何分配用户?
https://graph.windows.net/tenant-id/users/user-id/appRoleAssignments?api-version=1.6
:
https://graph.windows.net/tenant-id/users/user-id/appRoleAssignments?api-version=1.6
您可以通过一个HTTP POST来创建任务:
答
您可以查询图形API时,通过导航属性获取用户的appRoleAssignments
您需要发送的对象如下所示:
{
"id": "id-of-role",
"principalId": "objectId-of-user",
"resourceId": "objectId-of-service-principal"
}
如果您的应用程序没有任何作用,但仍希望将用户分配,似乎你可以将ID设置为全零:
当资源不声明任何权限,一必须指定默认ID(零GUID)。
因此,像:
{
"id":"00000000-0000-0000-0000-000000000000",
"resourceId": "a27d8321-3dc6-44a1-bf19-2546a9f2806e",
"principalId": "c4f810b8-2ea1-4580-9595-30275a28c2a2"
}
非常感谢你。我试图看看是否可以使用更新的MSFT Graph API复制:https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/resources/directoryobject,但这很好。 – babakh
我正在努力与此。如果我从租户获取应用程序的对象ID或应用程序ID,我总是得到错误资源不存在 – Sentinel
它是您需要的服务主体的对象ID,而不是应用程序。您可以在Azure门户的Azure AD刀片中的企业应用程序下找到服务主体。在它的属性中你会找到对象ID。 – juunas