使用Graph API

时间:2017-04-19 19:47:33

标签: azure azure-active-directory azure-ad-graph-api

我正在尝试编写一个脚本,使用Graph API将用户分配到Azure AD应用程序(servicePrincipal)。我正在我的沙盒中对此进行测试,我已经定义了应用程序并为其分配了用户。但是,当我查询servicePrincipal时,我在响应中的任何位置都看不到用户。

问题:

  1. 根据documentation,不应该有appRoleAssignment吗?

  2. 文档说这个字段是只读的,那么你应该如何分配用户呢?

2 个答案:

答案 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>"
}