在 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.All、User.Read 和 User.ReadWrite 权限就是此类权限。
其他操作(包括管理其他用户的详细信息)需要通过其他 Microsoft Graph 权限和Microsoft Entra角色授予的管理权限。 此外,某些操作被视为敏感操作,只有有限的管理员可以执行这些操作。 有关详细信息,请参阅 谁可以重置密码 和 谁可以更新敏感属性 部分。
Microsoft Entra ID中的默认用户权限
Microsoft Entra ID中有两种类型的用户 - 成员和来宾。 最初,成员用户是在租户中本机创建的。 来宾用户通过兑换其邀请加入租户,并作为企业到企业 (B2B) 协作来宾访问租户。
默认权限集取决于用户是成员用户还是来宾用户。 有关成员用户和来宾用户可以执行的操作的详细信息,请参阅 Microsoft Entra ID 中的默认用户权限是什么?。
外部租户中的默认用户权限
外部租户中Microsoft Entra ID客户也有默认权限。 下表显示了使客户能够管理其自己的配置文件的 API 操作。
用户 ID 或 userPrincipalName 始终是已登录用户的 。
用户操作 | API 操作 | 所需的权限 |
---|---|---|
读取配置文件 |
GET /me 或 GET /users/{id or userPrincipalName} |
User.Read |
更新配置文件 |
PATCH /me 或 PATCH /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
- photo
- securityIdentifier
- surname
- userPrincipalName
此外,以下特定于方案的权限还允许应用读取基本用户配置文件,该配置文件主要包含与标识符相关的属性: User-Mail.ReadWrite.All、 User-PasswordProfile.ReadWrite.All、 User-Phone.ReadWrite.All、 User-LifeCycleInfo.Read.All、 User-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数据存储之外:signInActivity、cloudLicensing、mailboxSettings、deviceEnrollmentLimit、print、aboutMe、生日、hireDate、interests、mySite、pastProjects、preferredName、责任、学校、技能。