You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用MS Graph修改自身onPremisesExtensionAttributes所需权限咨询

问题:修改自身Microsoft配置文件的onPremisesExtensionAttributes时权限不足

我正在开发单页应用(SPA),尝试通过MS Graph调用以下接口修改自己的配置文件中的onPremisesExtensionAttributes:

PATCH https://graph.microsoft.com/v1.0/users/{my-user-id}
Content-Type: application/json

{
    "onPremisesExtensionAttributes" : {
        "extensionAttribute10" : "test"
    }
}

但收到错误:

{
    "error": {
        "code": "Authorization_RequestDenied",
        "message": "Insufficient privileges to complete the operation.",
        "innerError": {
            "date": "2023-03-10T08:33:10",
            "request-id": "1f20871c-e9f2-46df-bdce-21157212ef7a",
            "client-request-id": "1f20871c-e9f2-46df-bdce-21157212ef7a"
        }
    }
}

当前应用已配置的委托权限:

  • https://graph.microsoft.com/User.Read
  • https://graph.microsoft.com/User.ReadWrite

修改电话号码等其他属性可以成功,但仅修改extensionAttribute时出现权限问题。

更新:添加User.ReadWrite.All权限后可以成功,但我不希望允许应用编辑他人的配置文件,只想允许用户编辑自己的配置文件。


解决方案

onPremisesExtensionAttributes是从本地Active Directory同步到Azure AD的属性,这类属性的修改权限逻辑和普通用户属性不同:

  • 默认的User.ReadWrite委托权限仅支持修改用户自身的基础属性(如电话号码),无法修改这类同步过来的扩展属性。
  • User.ReadWrite.All权限虽然能解决问题,但会赋予应用编辑所有用户资料的权限,不符合需求。

更合适的权限是**Directory.AccessAsUser.All**委托权限:

  • 该权限允许用户以自身身份访问和修改自己的目录对象属性,包含onPremisesExtensionAttributes。
  • 不会赋予应用编辑其他用户资料的权限,满足仅修改自身属性的需求。

操作步骤:

  1. 在Azure AD应用注册的「API权限」页面,添加Directory.AccessAsUser.All委托权限。
  2. 由Azure AD管理员同意该权限(目录级权限需要管理员同意)。
  3. 使用该权限调用MS Graph API,建议使用/me端点替代/users/{my-user-id},确保仅修改当前用户:
PATCH https://graph.microsoft.com/v1.0/me
Content-Type: application/json

{
    "onPremisesExtensionAttributes" : {
        "extensionAttribute10" : "test"
    }
}

内容的提问来源于stack exchange,提问作者santal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 19:33:21