适用于: 开发人员版
在 SharePoint Embedded 应用程序调用 Microsoft Graph 或 SharePoint Embedded API 之前配置身份验证和授权。
完成 首先 注册应用程序权限 ,以便在使用租户中注册容器类型。
了解访问模型
SharePoint Embedded 使用两个权限层。
Microsoft Graph 权限允许应用调用 SharePoint Embedded 终结点。
容器类型应用程序权限允许应用访问特定容器类型的容器。
这两个图层都是必需的。
重要
Microsoft Graph 本身的同意不会授予对容器的访问权限。 还必须向应用授予对容器类型的权限。
配置 Microsoft Entra ID 应用
从 Microsoft Entra ID 应用注册开始。 SharePoint Embedded 支持所有 Microsoft Entra 服务主体类型。
针对你的应用程序类型进行配置:
- 注册或标识拥有的应用程序。
- 为开发和生产客户端添加重定向 URI。
- 根据需要为仅应用流添加凭据。
- 为 SharePoint Embedded 访问添加 Microsoft Graph 权限。
- 添加注册方案所需的 Microsoft Graph 权限。
- 请求管理员在需要时授予同意。
有关常规步骤,请参阅向 Microsoft 标识平台注册应用程序。
请求 Microsoft Graph 权限
通过 Microsoft Graph FileStorageContainer.Selected执行的 SharePoint Embedded 操作需要 .
使用代表用户进行访问的委托 FileStorageContainer.Selected 。
使用应用程序 FileStorageContainer.Selected 进行仅应用访问。
应用程序 FileStorageContainer.Selected 需要使用租户中的管理员同意。 委派不需要 FileStorageContainer.Selected 管理员同意。
用于 FileStorageContainer.Manage.All 代表管理员用户跨使用租户中所有可治理容器类型的管理功能。 这些功能包括枚举、删除、还原、清除和更新容器以及管理其权限。
注意
Microsoft Graph 权限和容器类型应用程序权限的组合决定了应用程序实际可以执行的操作。
请求注册权限
容器类型注册在 v1.0 中使用 Microsoft Graph 容器类型注册 API。
若要注册,请请求 Microsoft Graph 权限 (FileStorageContainerTypeReg.Selected 委派的或仅限应用的) 。
| 作用域名称 | 类型 | 用途 |
|---|---|---|
FileStorageContainerTypeReg.Selected |
已委派或应用程序 | 在使用租户上启用容器类型注册。 |
对于委派注册调用,登录用户必须具有 SharePoint 嵌入式管理员或全局管理员角色。
将此权限与 注册应用程序权限配合使用。
尽可能优先委派访问
尽可能代表用户使用访问权限。
委派的访问权限提高了安全性、责任、可审计性以及与用户容器成员身份的一致性。
使用委派访问时,有效权限是应用程序权限和用户容器权限的交叉点。
用户必须是容器的成员。
使用机密客户端应用程序来控制你的应用控制代表用户执行的操作。 公共客户端应用程序可能会向最终用户公开用户令牌,这可能导致执行超出应用控制范围的操作。 有关详细信息,请参阅 公共客户端和机密客户端应用程序。
配置委派的令牌购置
对于委派调用:
- 使用 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 代理体验。
-
搜索:SharePoint Embedded 内容上的 Microsoft 搜索除了需要委派的
Files.Read.All权限。FileStorageContainer.Selected -
需要用户许可证的操作:没有 OneDrive 的委派用户将返回列表 容器
403 Forbidden(仅限应用的调用不受) 影响,用户需要 Microsoft 365 许可证才能显示在 Office @mentions 人员选取器中。 -
对容器的管理操作:
FileStorageContainer.Manage.All要求登录用户是 SharePoint Embedded 管理员或全局管理员。 对于对容器的常规应用访问,请在所需的容器类型权限下使用FileStorageContainer.Selected。
重要
不要假定每个操作都使用相同的令牌或权限资源。 在实现流之前检查异常的访问模式。
授予容器类型应用程序权限
拥有应用程序通过在消费租户中注册 容器类型 授予容器类型应用程序权限。 这些权限确定应用程序可对容器类型的容器执行哪些操作。
| 权限 | 说明 |
|---|---|
| 无 | 对任何容器或此容器类型的内容都没有权限。 |
| ReadContent | 读取此容器类型的容器的内容。 |
| WriteContent | 将内容写入此容器类型的容器。 需要 ReadContent。 |
| 创建 | 创建此容器类型的容器。 |
| Delete | 删除此容器类型的容器。 |
| 阅读 | 读取此容器类型的容器的元数据。 |
| 写入 | 更新此容器类型的容器的元数据。 |
| EnumeratePermissions | 枚举容器的成员及其角色。 |
| AddPermissions | 向容器中添加成员。 |
| UpdatePermissions | 更改现有成员的角色。 |
| DeletePermissions | 从容器中删除 (但不自行) 的其他成员。 |
| DeleteOwnPermission | 从容器中删除自己的成员身份。 |
| ManagePermissions | 添加、删除 ((包括自) )或更新容器角色中的成员。 |
| ManageContent | (WriteContent 管理容器内容,并在“仅应用”模式下放弃签出) 。 |
| 完整 | 此容器类型的容器的所有权限。 |
管理容器类型所有者
任何不是外部标识的 Microsoft Entra 用户都可以是容器类型所有者。 通过 fileStorageContainerType 资源上的权限导航属性进行所有者管理目前仅在 Microsoft Graph Beta 中可用。 每个条目都具有角色 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 | Access 摘要 |
|---|---|
| 读者 | 读取容器属性和内容。 |
| 作家 | 读取者访问权限,以及创建、更新和删除内容和更新适用属性。 |
| Manager | 编写器访问权限以及管理容器成员身份。 |
| 所有者 | 管理员访问权限加上删除容器。 |
当用户通过委派调用创建容器时,系统会自动为该用户分配“所有者”角色。
若要共享单个项目而不授予容器访问权限,请使用 driveItem 邀请 或 权限创建 终结点。 共享项不会授予对容器或其中任何其他项的访问权限。
验证身份验证
在功能代码之前验证流:
- 确认管理员同意已成功完成。
- 获取委托令牌。
- 获取仅限应用的令牌。
- 调用与令牌类型匹配的简单 Graph 终结点。
- 确认注册包括通话应用。
- 确认委派调用的用户成员身份。
- 确认仅限应用的访问受容器类型权限的限制。
授权故障疑难解答
| 症状 | 支票 |
|---|---|
| Graph 调用返回未授权 | 令牌缺失、过期或资源错误。 |
| Graph 调用返回被禁止 | 缺少同意、Graph 权限或容器类型权限。 |
| 一个用户的委派调用失败 | 用户不是容器成员或缺少所需的角色。 |
| 仅应用呼叫的访问权限过多 | 容器类型权限比必要的权限更广泛。 |
| 注册调用失败 | 使用 FileStorageContainerTypeReg.Selected;对于委派调用,用户需要 SharePoint Embedded 管理员或全局管理员角色。 |
| 搜索调用失败 | 查看特定于搜索的特殊访问模式。 |
后续步骤
使用配置的流创建 和管理容器。