调用Graph API更新Entra ID用户生日时遇权限异常问题排查
问题:Graph API更新用户birthday字段抛出未授权异常
问题详情
调用Graph API的PATCH请求https://graph.microsoft.com/v1.0/users/{{userid}}更新birthday字段时,抛出Microsoft.Office.Server.Directory.DirectoryObjectUnauthorizedAccessException异常,但更新employeeHireDate等其他字段的请求可正常执行,说明访问令牌有效,且日期格式已确认无误。该功能之前可正常使用,当前使用商业版Entra ID账户。
请求信息
- PATCH请求体:
{ "birthday": "1990-01-01T00:00:00Z" }
- 请求头:
{ "Authorization": "Bearer {{accesstoken}}", "Content-type": "application/json" }
已配置权限
Microsoft.Graph - Directory.AccessAsUser.All (delegated) - Directory.Read.All (application) - Directory.ReadWrite.All (application) - Sites.FullControl.All (application) - User.EnableDisableAccount (application) - User.ManageIdentities.All (application) - User.Read (delegated) - User.ReadAll (application) - User.ReadWrite (delegated) - User.ReadWriteAll (application) SharePoint - Sites.ReadWrite.All (application) - User.ReadWrite.All (delegated)
可能原因与解决办法
1. 权限生效验证
虽然配置了Directory.ReadWrite.All或User.ReadWriteAll应用权限,但需确认:
- 权限是否已完成管理员同意:应用权限必须经过全局管理员或对应角色管理员授予同意后才会生效,若之前的同意被撤销,会导致权限失效。
- 访问令牌权限范围:解码令牌检查
roles(应用权限)或scp(委托权限)字段,确认是否包含User.ReadWriteAll或Directory.ReadWriteAll。
2. 用户属性更新限制
birthday属于用户个人信息字段,可能存在租户级限制:
- 委托权限场景:普通用户仅能修改自身的
birthday字段,无法修改其他用户的该字段;应用权限场景下,租户可能通过身份保护策略或数据治理规则限制了该字段的修改权限。 - 租户属性权限配置:检查Entra ID控制台的「用户属性」设置,确认是否允许应用修改
birthday字段。
3. 端点与字段校验
微软未移除该字段的更新功能,但需确认:
- 请求端点中的
userid格式正确(对象ID、UPN或邮箱均可)。 - 请求体字段拼写为
birthday(小写),无格式错误。
4. 临时服务异常
偶尔Graph API会出现区域性服务故障,可通过微软365管理中心的服务健康状态查看相关报告,或间隔一段时间重试请求。
内容的提问来源于stack exchange,提问作者Johananvm
相关产品推荐
相关产品推荐

