【问题标题】:"Update User" operation giving "Insufficient privileges to complete the operation.' error in Microsoft Graph API“更新用户”操作给出“权限不足,无法完成操作。” Microsoft Graph API 中的错误
【发布时间】:2023-12-14 02:50:01
【问题描述】:

我正在尝试创建一个重置密码页面,该页面将使用登录用户的新密码来重置 Azure AD 中用户的密码。我已阅读下页提供的有关用户更新 API 的信息。

https://docs.microsoft.com/en-us/graph/api/user-update?view=graph-rest-1.0&tabs=cs

我有 Directory.ReadWrite.AllUser.ReadWrite.All (delegated)User.ReadWrite.All (Application) Azure AD 配置页面中的权限。我在SO 中询问了另一个关于通过 MS Graph API 创建用户的查询,我在其中学习了如何创建访问令牌。我遵循相同的程序来获取调用“用户更新 API”的访问令牌。在 Postman 中,我传递了以下值。

PATCH https://graph.microsoft.com/v1.0/users/principalname@blah.in
Content-type: application/json
Authorization: bearer TOKEN

{
     "passwordProfile":
    {
      "forceChangePasswordNextSignIn":false,
      "password": "XXXXXXXXX"
    }

}

当我执行此操作时,我收到以下错误

{
    "error": {
        "code": "Authorization_RequestDenied",
        "message": "Insufficient privileges to complete the operation.",
        "innerError": {
            "request-id": "1ab4e11b-57e7-481f-9d93-296a3dece72c",
            "date": "2019-05-10T05:13:19"
        }
    } }

我无法理解为什么我会收到此错误,因为所有权限都是为用户授予的。

在发布此问题之前,我已经完成了与 SO 中“没有足够的权限完成操作”相关的所有问题。

【问题讨论】:

  • 我会更新你的结果。根据内部流程,管理员需要时间来提供权限。

标签: azure microsoft-graph-api


【解决方案1】:

因为在更新passwordProfile 属性时,您需要Directory.AccessAsUser.All 权限。

见:https://docs.microsoft.com/en-us/graph/api/user-update?view=graph-rest-1.0&tabs=cs

【讨论】:

  • 很遗憾我没有读到那一行。我必须让我的管理员提供此权限,看看这是否能解决问题。
  • @KurioZ7 对这个权限要非常小心。它将允许您的应用执行登录用户在 Azure AD 中可以执行的任何操作。如果登录的用户是管理员,这可能会非常有影响力。如果您的应用程序代码或应用程序服务器遭到破坏(例如,如果您的凭据管理不完善),则该应用程序拥有管理员的所有权力。