我正在尝试编写一个脚本,使用Graph API将用户分配到Azure AD应用程序(servicePrincipal)。我正在我的沙盒中对此进行测试,我已经定义了应用程序并为其分配了用户。但是,当我查询servicePrincipal
时,我在响应中的任何位置都看不到用户。
问题:
根据documentation,不应该有appRoleAssignment
吗?
文档说这个字段是只读的,那么你应该如何分配用户呢?
答案 0 :(得分:5)
查询图谱API时,您可以通过导航属性获取用户的appRoleAssignments
:
https://graph.windows.net/tenant-id/users/user-id/appRoleAssignments?api-version=1.6
您可以通过将HTTP POST发送到:
来创建分配https://graph.windows.net/tenant-id/users/user-id/appRoleAssignments?api-version=1.6
您需要发送的对象如下所示:
{
"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"
}
答案 1 :(得分:0)
现在接受的答案有点过时了。 您需要的网址是:
2.1
发送以下内容的HTTP POST:
https://graph.microsoft.com/v1.0/<tenantID>/users/<userObjectID>/appRoleAssignments
最简单的测试方法是通过Microsoft Graph Explorer
或者我通过bash脚本调用azure cli
{
"principalId": "<objectId-of-user>",
"resourceId": "<objectId-of-service-principal>",
"principalType": "User",
"appRoleId": "<id of role>"
}