尝试将用户分配给应用时出错

时间:2017-12-05 14:52:23

标签: azure azure-active-directory microsoft-graph

正如标题所示,我在尝试将用户分配给AAD应用程序时遇到错误。 这是请求和我得到的错误

enter image description here

enter image description here

enter image description here

显然它与API的版本有关,但即使更改了api-version参数,我也无法使其工作。

更新: 当我将请求网址修改为https://graph.microsoft.com/v1.0/时,我收到以下错误:Unsupported segment type. ODataQuery: users/{userid}/appRoleAssignments

更新2 : 即使使用测试版,这似乎也不起作用:

更新3 : 这仍然可以在MS Graph的测试版中使用吗?否则有任何替代方案(除了powershell和graph api)以编程方式实现我想要的东西     https://graph.microsoft.com/beta/users/ {用户id} / appRoleAssignments / {appRoleId}

仍然出现Unsupported segment type错误

2 个答案:

答案 0 :(得分:2)

您在此处使用的网址不是有效的Microsoft Graph调用。

作为REST API,URL的每个段实际上都是API命名空间或方法(取决于它是否是最终的URI段)。为了说明,我们分解用于检索user

的URI
GET https://graph.microsoft.com/v1.0/users/{userid}

将其分解为我们得到的组件:

  • GET是" HTTP动词"这定义了我们正在采取的行动。这遵循标准的CRUD模型:

    • POST =创建实体或记录
    • GET =读取实体或记录
    • PATCH =更新实体或记录
    • DELETE =删除实体或记录
  • https://graph.microsoft.com是Microsoft Graph本身的地址。

  • /v1.0是您要调用的API版本(目前为/v1.0/beta)。

  • /users告诉图,您希望访问user集合

  • /{userid}告诉图表您在/users集合中寻找的特定用户

由于/{userid}是由URL指定的最终段,因此它将从Azure Active Directory返回该单个User记录的JSON表示。

您可以在Traverse Microsoft Graph的文章Microsoft Graph Documentation中找到有关Microsoft Graph如何组织的详细说明。

在你的问题中,你描述了两个不同的电话:

POST https://graph.microsoft.com/{GUID}
POST https://graph.microsoft.com/v1.0/{GUID}

您收到错误的原因是您发送的{GUID}没有名称空间或方法。它实际上根本不知道你要求它做什么。由于Microsoft Graph处理大量不同的服务(SharePoint,Azure AD,Exchange,规划师,团队,小组等),因此它甚至无法猜测您要定位的服务。

根据您所做的其他评论,听起来您正在尝试使用appRoleAssignment。此端点仍处于预览状态,因此仅在/beta版本中可用。它还仅支持GETUPDATEDELETE方法(UPDATE将用户添加到appRoleAssignmentDELETE从{删除用户} {1}})。

你的电话应该是这样的:

appRoleAssignment

您可以在Update approleassignment找到此来电的完整文档。

答案 1 :(得分:2)

马克的回答是正确的 - 有几点需要注意:  1.这仅适用于/ beta,不建议用于生产。  2.有一个错误阻止它工作。

要在生产中执行此操作,您唯一的选择是使用Azure AD Graph API。您将看到我们的文档建议在任何地方使用Microsoft Graph,但有一些地方与Azure AD Graph存在一些差距。

有关Microsoft Graph与Azure AD Graph支持的内容的更多信息,请查看此主题https://dev.office.com/blogs/microsoft-graph-or-azure-ad-graph

API调用与Marc上面的相同,但具有不同的根URL和版本控制方案。所以它看起来像这样:

POST https://graph.windows.net/{tenantId}/users/{userId}/appRoleAssignments?api-version=1.6 { "id": "31952ade-a03c-414c-8340-2f11e9099106", "principalId": "84b80893-8749-40a3-97b7-68513b600544", "principalType": "User", "resourceId": "29c7ed43-a9a1-4b31-8a64-fc90c3ca4e73" }

查看此older blogAAD Graph reference docs

希望这有帮助,