更改accountEnabled引发403 Authorization_RequestDenied

时间:2019-04-10 08:30:41

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

我正在使用具有已定义权限Application.ReadWrite.AllUser.ReadWrite.All(都包含在Bearer令牌中)的客户端应用程序(客户端凭据授予),将用户的accountEnabled更改为false,例如:

{
    "accountEnabled": false,
    "city": "C234",
    "country": "AFG",
    "displayName": "Steve Rogers",
    "givenName": "Steve",
    "jobTitle": "Azure",
    "mailNickname": "steve",
    "postalCode": "Z345",
    "streetAddress": "S123",
    "surname": "Rogers",
    "userPrincipalName": "steve@***.onmicrosoft.com",
    "id": "aec...278",
    "mobilePhone": null
}

但是所有请求都以403结尾

{
  "error": {
    "code": "Authorization_RequestDenied",
    "message": "Insufficient privileges to complete the operation.",
    "innerError": {
      "request-id": "e7a...e42",
      "date": "2019-04-10T08:21:12"
    }
  }
}

文档不包含任何限制或其他权限要求。这是Graph API中的错误吗?

4 个答案:

答案 0 :(得分:0)

在我这一边,它可以工作。以下是我的过程:

  1. 使用客户端凭据获取承载令牌: enter image description here

要解析承载令牌:

enter image description here 2.使用此承载令牌调用ms graph api:

enter image description here

  1. 在azure门户中检查禁用的用户:

enter image description here

答案 1 :(得分:0)

否必须强制授予在Azure门户上访问此API的权限。

  

确保已在调用API的门户上设置了必需的权限访问权限。此外,用户在门户网站中不得具有任何目录角色。

  1. 如果您是AAD中的管理员,则可以授予以下权限: 单位中的用户通过单击“授予权限”按钮。

  2. 然后,您可以使用代码(客户端凭据流来获取 令牌)并查询用户信息。如果您检查索赔 由天蓝色广告发布的访问令牌,您可以找到Directory.Read.All 角色声明权限

在给定的引用中,相同的线程在此处回答,您可以引用here

  

注意对于Client Credentials代码示例,您可以检查here

如果您还有任何疑问,请随时在评论中提问。谢谢。

答案 2 :(得分:0)

这似乎是不合理的,但实际上我可以重现您的问题,我想您要更新的用户在您的租户中具有目录角色。如果是这样,只需删除他的目录角色,即可正常工作。 (应该有一些延迟,您可能需要等待几分钟)。

答案 3 :(得分:0)

谢谢大家,我能够找到根本原因-您无法以管理员身份禁用用户。我很不幸,选择了几位用户,所有这些用户均为管理员角色。 https://docs.microsoft.com/en-us/graph/permissions-reference#remarks-2