适用于: 开发 人员
在 SharePoint Embedded 应用程序调用 Microsoft Graph 或 SharePoint Embedded API 之前配置身份验证和授权。
首先完成 注册应用程序权限 ,以便在使用租户中注册容器类型。
了解访问模型
SharePoint Embedded 使用两个权限层。
Microsoft Graph 权限允许应用程序调用 SharePoint Embedded 终结点。
容器类型应用程序权限允许应用访问特定容器类型的容器。
这两个层都是必需的。
重要
Microsoft Graph 同意本身不会授予对容器的访问权限。 还必须向应用授予对容器类型的权限。
配置Microsoft Entra ID应用
从Microsoft Entra ID应用注册开始。
为应用程序类型配置它:
- 注册或标识拥有的应用程序。
- 为开发和生产客户端添加重定向 URI。
- 根据需要为仅限应用的流添加凭据。
- 为 SharePoint Embedded 访问添加 Microsoft Graph 权限。
- 添加注册方案所需的Microsoft Graph 权限。
- 要求管理员在需要时授予许可。
有关常规步骤,请参阅向 Microsoft 标识平台注册应用程序。
请求Microsoft Graph 权限
通过 Microsoft Graph 执行 SharePoint Embedded 操作需要 FileStorageContainer.Selected。
使用委托 FileStorageContainer.Selected 代表用户访问。
使用应用程序 FileStorageContainer.Selected 进行仅应用访问。
应用程序 FileStorageContainer.Selected 需要使用租户中的管理员同意。 委托 FileStorageContainer.Selected 不需要管理员同意。
对于代表管理员用户的管理功能(例如枚举、删除、还原、清除和更新容器,以及跨使用租户中的所有可治理容器类型管理其权限),请请求 FileStorageContainer.Manage.All。
注意
Microsoft Graph 权限和容器类型应用程序权限的组合决定了应用程序实际可以执行的操作。
请求注册权限
容器类型注册使用 v1.0 中的 Microsoft Graph 容器类型注册 API。
对于注册,请请求 FileStorageContainerTypeReg.Selected Microsoft Graph 权限 (委托或仅应用) 。
| 作用域名称 | 类型 | 用途 |
|---|---|---|
FileStorageContainerTypeReg.Selected |
委托或应用程序 | 在使用租户上启用容器类型注册。 |
对于委派的注册调用,已登录用户必须具有 SharePoint Embedded 管理员或全局管理员角色。
将此权限与 注册应用程序权限一起使用。
如果可能,首选委派访问
尽可能代表用户使用访问权限。
委派访问可提高安全性、问责制、可审核性,并与用户的容器成员身份保持一致。
使用委托访问时,有效权限是应用程序权限和用户容器权限的交集。
用户必须是容器的成员。
使用机密客户端应用程序使应用能够控制代表用户执行的操作。 公共客户端应用程序可以向最终用户公开用户令牌,这可能会导致在应用控制范围之外执行的操作。 有关详细信息,请参阅 公共客户端和机密客户端应用程序。
配置委托令牌获取
对于委托的调用:
- 使用 Microsoft 标识平台 登录用户。
- 请求委托的
FileStorageContainer.Selected。 - 确认已根据使用租户的用户同意策略授予委派同意。
- 获取 Microsoft Graph 的访问令牌。
- 调用 Microsoft Graph SharePoint Embedded 终结点。
- 验证用户是目标容器的成员。
如果用户不是容器成员,则应用无法代表用户访问该容器。
配置仅限应用的令牌获取
对不以用户身份运行的服务工作负载使用仅限应用的访问权限。
对于仅限应用的调用:
- 配置应用程序凭据,例如证书。
- 请求应用程序
FileStorageContainer.Selected。 - 让使用租户管理员授予管理员同意。
- 使用客户端凭据流获取令牌。
- 调用 Microsoft Graph SharePoint Embedded 终结点。
- 根据工作负载的需求限制容器类型权限。
警告
仅限应用的令牌可以访问其容器类型应用程序权限启用的所有容器。 使用最小特权。
调用 Microsoft Graph API
获取令牌后,通过 Microsoft Graph 调用 SharePoint Embedded 操作。 有用的参考资料包括:
继续为生命周期操作 创建和管理容器 。
处理未通过 Graph 公开的操作
某些操作具有特殊的访问模式。
这些操作使用异常访问模式:
- 拥有租户中的容器类型管理通过 Microsoft Graph 容器类型 API (
FileStorageContainerType.Manage.All委托的权限) 。 - 使用租户中的容器类型注册通过 Microsoft Graph 容器类型注册 API (
FileStorageContainerTypeReg.Selected) 。 - SharePoint Embedded 代理通过自己的权限要求体验。
-
搜索:Microsoft除了 在 SharePoint Embedded 上搜索内容还需要委派
Files.Read.All权限FileStorageContainer.Selected。 -
需要用户许可证的操作:对于没有 OneDrive (仅限应用的调用的委派用户,列表 容器 将返回
403 Forbidden) ,并且用户需要 Microsoft 365 许可证才能显示在 Office @mentions 人员选取器中。 -
对容器的管理操作:
FileStorageContainer.Manage.All要求已登录用户是 SharePoint Embedded 管理员或全局管理员。 对于非管理员用户,它不授予任何权限 - 如果仅Manage.All授予,则应用将被拒绝访问;如果同时Manage.All授予 和FileStorageContainer.Selected,Manage.All则忽略。
重要
不要假设每个操作都使用相同的令牌或权限资源。 在实现流之前检查异常访问模式。
授予容器类型应用程序权限
拥有的应用程序通过使用租户中的容器类型注册授予 容器类型 应用程序权限。 这些权限确定应用程序可以使用容器类型的容器执行哪些操作。
| 权限 | 说明 |
|---|---|
| 无 | 无权访问此容器类型的任何容器或内容。 |
| ReadContent | 读取此容器类型的容器的内容。 |
| WriteContent | 将内容写入此容器类型的容器。 需要 ReadContent。 |
| 创建 | 创建此容器类型的容器。 |
| Delete | 删除此容器类型的容器。 |
| 阅读 | 读取此容器类型的容器的元数据。 |
| 写入 | 更新此容器类型的容器的元数据。 |
| EnumeratePermissions | 枚举容器的成员及其角色。 |
| AddPermissions | 将成员添加到容器。 |
| UpdatePermissions | 更改现有成员的角色。 |
| DeletePermissions | 从容器中删除 (但不能自) 的其他成员。 |
| DeleteOwnPermission | 从容器中删除自己的成员身份。 |
| ManagePermissions | 添加、删除 ((包括自) )或更新容器角色中的成员。 |
| ManageContent | (WriteContent 管理容器内容,并在仅应用模式下放弃签出) 。 |
| 完整 | 此容器类型的容器的所有权限。 |
管理容器类型所有者
任何不是外部标识的Microsoft Entra用户都可以是容器类型所有者。 所有者通过 fileStorageContainerType 资源的权限导航属性进行管理。 每个条目都有 角色, owner 并通过 grantedToV2标识用户。
- 自动分配: 创建容器类型的 用户会自动分配为所有者。
-
添加所有者:用于
POST /containerTypes/{id}/permissions为每个容器类型添加最多三个所有者。 -
删除所有者:用于
DELETE /containerTypes/{id}/permissions/{id}删除所有者。 -
读取所有者:使用
GET /containerTypes/{id}?$expand=permissions或GET /containerTypes/{id}/permissions检索所有者。
SharePoint Embedded 管理员可以管理在拥有租户中创建并安装在使用租户中的所有应用程序。 分配所需的最低特权角色;对于这些任务,建议使用 SharePoint Embedded 管理员角色,而使用全局管理员角色。
了解容器权限
容器权限仅适用于委派访问。 在没有用户的情况下访问容器的应用获取由其容器类型应用程序权限定义的完全访问权限。
用户通过两种方式获取容器成员身份:
- 直接成员身份 - 用户直接添加到具有特定权限的容器。
- 可传递成员身份 - 用户属于 容器成员的 Microsoft 365 组 。
用户必须是具有以下角色之一的容器的成员:
| Role | 访问摘要 |
|---|---|
| 读者 | 读取容器属性和内容。 |
| 作家 | 读取者访问权限以及创建、更新和删除内容以及更新适用的属性。 |
| Manager | 编写器访问权限和管理容器成员身份。 |
| 所有者 | 管理器访问权限和删除容器。 |
当用户通过委托的调用创建容器时,会自动为该用户分配“所有者”角色。
若要在不授予容器访问权限的情况下共享单个项,请使用 driveItem 邀请 或 权限创建 终结点。 共享项不会授予对容器或容器中任何其他项的访问权限。
验证身份验证
在功能代码之前验证流:
- 确认管理员同意是否已成功完成。
- 获取委托的令牌。
- 获取仅限应用的令牌。
- 调用与令牌类型匹配的简单 Graph 终结点。
- 确认注册包括呼叫应用。
- 确认委派呼叫的用户成员身份。
- 确认仅限应用的访问权限受容器类型权限限制。
排查授权失败问题
| 症状 | 支票 |
|---|---|
| 图调用返回未授权 | 令牌缺失、过期或错误资源。 |
| 图形调用返回禁止 | 缺少同意、Graph 权限或容器类型权限。 |
| 一个用户的委托调用失败 | 用户不是容器成员或缺少所需的角色。 |
| 仅限应用调用的访问权限过多 | 容器类型权限比必要范围更广。 |
| 注册调用失败 | 使用 FileStorageContainerTypeReg.Selected;对于委派的调用,用户需要 SharePoint Embedded 管理员或全局管理员角色。 |
| 搜索调用失败 | 查看特定于搜索的特殊访问模式。 |
后续步骤
使用配置的流 创建和管理容器。