在 Microsoft Graph 中与用户一起工作

重要

Microsoft Graph /beta 版本下的 API 可能会发生更改。 不支持在生产应用程序中使用这些 API。 若要确定 API 是否在 v1.0 中可用,请使用 版本 选择器。

可以使用 Microsoft Graph 基于用户及其与其他对象的关系生成引人注目的应用体验。 例如,他们与其他用户和组、组成员身份以及他们访问的资源(例如邮件、日历、文件和管理角色)的关系。

通过 Microsoft Graph,你能以两种方式访问用户:

  • 按其 ID 或 userPrincipalName, /users/{id}/users/{userPrincipalName}
  • 通过使用已登录的用户的 /me 别名,这与 /users/{signed-in user's id} 相同

常见 API 操作

Path 说明
/me 获取已登录用户的详细信息。
/users 列出组织中的用户。
/users/{id} 按 ID 获取特定用户。
/users/{id}/photo/$value 获取用户个人资料照片。
/users/{id}/manager 获取用户的经理。
/users/{id}/messages 列出用户主收件箱中的电子邮件。
/users/{id}/events 列出用户日历中即将发生的事件。
/users/{id}/drive 获取用户 OneDrive 文件存储。
/users/{id}/memberOf 列出用户是其成员的所有组。
/users/{id}/joinedTeams 列出用户所属的 Microsoft Teams。

授权和特权

Microsoft Graph 支持使用委托权限和应用程序权限来管理用户操作。 有关详细信息,请参阅 委托与应用程序权限 和相应的 API 参考文档,了解每个操作所需的权限。

某些用户操作可由已登录用户根据自己的详细信息执行。 对于此类操作,用户可以授予应用访问其自己详细信息Microsoft Graph 权限。 User.ReadBasic.AllUser.ReadUser.ReadWrite 权限就是此类权限。

其他操作(包括管理其他用户的详细信息)需要通过其他 Microsoft Graph 权限和Microsoft Entra角色授予的管理权限。 此外,某些操作被视为敏感操作,只有有限的管理员可以执行这些操作。 有关详细信息,请参阅 谁可以重置密码谁可以更新敏感属性 部分。

Microsoft Entra ID中的默认用户权限

Microsoft Entra ID中有两种类型的用户 - 成员和来宾。 最初,成员用户是在租户中本机创建的。 来宾用户通过兑换其邀请加入租户,并作为企业到企业 (B2B) 协作来宾访问租户。

默认权限集取决于用户是成员用户还是来宾用户。 有关成员用户和来宾用户可以执行的操作的详细信息,请参阅 Microsoft Entra ID 中的默认用户权限是什么?

外部租户中的默认用户权限

外部租户中Microsoft Entra ID客户也有默认权限。 下表显示了使客户能够管理其自己的配置文件的 API 操作。

用户 ID 或 userPrincipalName 始终是已登录用户的 。

用户操作 API 操作 所需的权限
读取配置文件 GET /meGET /users/{id or userPrincipalName} User.Read
更新配置文件 PATCH /mePATCH /users/{id or userPrincipalName}

以下属性可更新:city、country、displayName、givenName、jobTitle、postalCode、state、streetAddress、surname 和 preferredLanguage
User.ReadWrite
更改密码 POST /me/changePassword Directory.AccessAsUser.All

用户基本配置文件

User.ReadBasic.All 权限限制应用读取其他用户工作或学校帐户的有限属性集的权限。 此基本配置文件仅包含以下属性:

  • displayName
  • givenName
  • id
  • mail
  • photo
  • securityIdentifier
  • surname
  • userPrincipalName

此外,以下特定于方案的权限还允许应用读取基本用户配置文件,该配置文件主要包含与标识符相关的属性: User-Mail.ReadWrite.AllUser-PasswordProfile.ReadWrite.AllUser-Phone.ReadWrite.AllUser-LifeCycleInfo.Read.AllUser-LifeCycleInfo.ReadWrite.All

敏感操作

针对用户对象的以下操作被视为敏感操作,并且可能仅锁定给特定管理员。 所有用户都可以读取敏感属性。

敏感操作 敏感属性名称
禁用或启用用户 accountEnabled
更新商务电话 businessPhones
更新移动电话 mobilePhone
更新本地不可变 ID onPremisesImmutableId
更新其他电子邮件 otherMails
更新密码配置文件 passwordProfile
更新用户主体名称 userPrincipalName
删除或还原用户 不适用

谁可以执行敏感操作

某些管理员可以对某些用户执行上述敏感操作。

在下表中,这些列列出了可以执行敏感操作的角色。 这些行列出了可以对其执行敏感操作的角色。

下表适用于在租户范围内分配的角色。 对于在管理单元范围内分配的角色, 存在进一步的限制

可以对其执行敏感操作的角色 身份验证管理员 用户管理员 Privileged Auth 管理员 Global Admin
身份验证管理员  
目录读取器
Global Admin    
组 管理员  
来宾邀请者
支持人员管理员  
消息中心读取器
密码管理员
Privileged Auth 管理员    
特权角色管理员    
报告读取者
用户
(无管理员角色)
用户
(无管理员角色,但可分配角色的组的成员或所有者)
   
角色范围限定为受限管理管理单元的用户    
用户管理员  
使用情况摘要报告阅读器
所有自定义角色

谁可以重置密码

在下表中,这些列列出了可以重置密码和使刷新令牌失效的角色。 这些行列出了可为其重置密码的角色。 例如,密码管理员可以重置目录读取者、来宾邀请者、密码管理员和没有管理员角色的用户的密码。 如果用户分配了任何其他角色,则密码管理员无法重置其密码。

下表适用于在租户范围内分配的角色。 对于在管理单元范围内分配的角色, 存在进一步的限制

可以重置密码的角色 密码管理员 支持人员管理员 身份验证管理员 用户管理员 Privileged Auth 管理员 Global Admin
身份验证管理员      
目录读取器
Global Admin         ✅*
组 管理员      
来宾邀请者
支持人员管理员    
消息中心读取器  
密码管理员
Privileged Auth 管理员        
特权角色管理员        
报告读取者  
用户
(无管理员角色)
用户
(无管理员角色,但可分配角色的组的成员或所有者)
       
角色范围限定为受限管理管理单元的用户        
用户管理员      
使用情况摘要报告阅读器  
所有自定义角色

重置密码的功能包括更新 自助密码重置所需的以下敏感属性的功能:

  • businessPhones
  • mobilePhone
  • otherMails

组织中来宾用户的用户和组搜索限制

用户和组搜索功能允许应用通过对 /users/groups 资源集(例如 https://graph.microsoft.com/v1.0/users)执行查询来搜索组织目录中的任何用户或组。 管理员和属于成员的用户都具有此功能;但是,来宾用户不会。

如果登录用户是来宾用户,应用程序可以读取特定用户或组的配置文件(例如,https://graph.microsoft.com/v1.0/users/241f22af-f634-44c0-9a15-c8cd2cea5531),具体视应用程序获得的授权而定;不过,不能对可能返回多个资源的 /users/groups 资源集执行查询。

借助授予的适当权限,应用程序可以读取用户或组的配置文件,具体是通过导航属性中的链接获取;例如,/users/{id}/directReports/groups/{id}/members

默认情况下不返回的属性

默认情况下,用户对象的某些属性不会返回,必须在查询参数中 $select 指定。 例如, 生日技能。 请参阅 用户实体的属性表, 以标识仅在 时才 $select返回的属性。

存储在main数据存储外部的属性

虽然用户资源数据主要存储在 Microsoft Entra ID 中,但其某些属性(如技能)存储在 SharePoint Online 中。 在大多数情况下,不能在与其他用户属性相同的“创建”或“更新”请求正文中指定这些属性。

在main数据存储外部存储的属性也不支持作为更改跟踪的一部分。 因此,更改这些属性中的任何一个都不会导致对象显示在增量查询响应中。

用户对象上的以下属性存储在main数据存储之外:signInActivitycloudLicensingmailboxSettingsdeviceEnrollmentLimitprintaboutMe生日hireDateinterestsmySitepastProjectspreferredName责任学校技能