若要使用 SharePoint Embedded,应用程序必须使用 Microsoft Graph。 详细了解 Microsoft Graph 身份验证和授权。 详细了解 SharePoint Embedded 体系结构。
概述
下面是 SharePoint Embedded 身份验证和授权的一些关键原则:
- 应用程序通过 Microsoft Graph 与 SharePoint Embedded 交互。
- 应用程序需要容器类型应用程序权限才能访问该容器类型的容器。
- 当代表用户使用访问权限时,应用程序只能访问用户所属的容器。
- 当在没有用户的情况下使用访问权限时,应用程序可以访问由其容器类型应用程序权限启用的所有容器。
- 应用程序尽可能代表用户使用访问权限来增强安全性和问责制
先决条件
- Microsoft Entra ID应用程序注册。 请参阅 注册应用程序。
- Microsoft Entra ID租户具有 Microsoft 365 订阅
Authorization
SharePoint Embedded 操作通过 Microsoft Graph 公开。 SharePoint Embedded 支持 代表用户进行访问 ,也支持 在没有用户的情况下进行访问。
重要
Microsoft向应用程序授予的 Graph 权限允许它调用 SharePoint Embedded 终结点。 但是,必须先向应用程序授予 对容器类型的权限 ,然后才能访问该类型的容器。
应用程序权限
SharePoint Embedded 应用程序需要在其应用程序清单中请求以下Microsoft Graph 权限才能使用 SharePoint Embedded:
- FileStorageContainerType.Manage.All 允许应用程序在拥有的租户上创建和管理容器类型。 只有在创建容器类型的拥有租户上才需要此权限。
- FileStorageContainerTypeReg.Selected 允许应用程序在使用租户上注册容器类型。
- FileStorageContainer.Selected 允许应用程序访问使用租户上给定容器类型的容器。
代表用户访问
代表用户的 SharePoint Embedded 操作要求应用程序接收对 Microsoft Graph FileStorageContainer.Selected 委托权限的同意。
除了应用程序在使用租户上获得 FileStorageContainer.Selected 的同意外,它所代表的用户还需要具有 用户权限。 应用程序拥有的有效权限是应用程序权限和代表用户操作时用户权限的交集。
重要
建议使用代表用户使用 SharePoint Embedded 的方法。 这种类型的访问可增强应用程序的安全性。 它还提高了应用程序执行的操作的可审核性。
在没有用户的情况下访问
没有用户的 SharePoint Embedded 操作要求应用程序接收Microsoft Graph FileStorageContainer.Selected 应用程序权限的同意。 此权限需要对使用租户的管理员同意。
注意
使用租户上的管理员必须同意应用程序的权限请求。 若要了解详细信息,请参阅 授予管理员同意。
容器类型应用程序权限
SharePoint Embedded 应用程序需要由拥有的应用程序授予容器类型应用程序权限,然后才能访问给定容器类型的容器。 容器类型应用程序权限是通过使用租户中的 容器类型注册 向应用程序授予的。
| 权限 | 说明 |
|---|---|
| 无 | 无权访问此容器类型的任何容器或内容。 |
| ReadContent | 可以读取此容器类型的容器的内容。 |
| WriteContent | 可以将内容写入此容器类型的容器。 如果没有 ReadContent 权限,则无法授予此权限。 |
| 创建 | 可以创建此容器类型的容器。 |
| 删除 | 可以删除此容器类型的容器。 |
| Read | 可以读取此容器类型的容器的元数据。 |
| Write | 可以更新此容器类型的容器的元数据。 |
| EnumeratePermissions | 可以为此容器类型的容器枚举容器的成员及其角色。 |
| AddPermissions | 可以为此容器类型的容器添加成员。 |
| UpdatePermissions | 可以更新 (更改此容器类型的容器) 现有成员身份的角色。 |
| DeletePermissions | 可以从此容器类型的容器的容器中删除其他成员 (但不能从容器中删除自) 。 |
| DeleteOwnPermission | 可以从此容器类型的容器中删除自己的成员身份。 |
| ManagePermissions | 可以添加、删除 ((包括自) ),或更新此容器类型的容器的容器角色中的成员。 |
| ManageContent | 可以在仅应用模式下管理容器的内容 (WriteContent 以及放弃签出权限) 。 |
| Full | 具有此容器类型容器的所有权限。 |
注意
Microsoft Graph 权限和容器类型应用程序权限的组合包含应用程序的客户端授权。
用户权限
根据以下方案向用户授予对 SharePoint Embedded 的不同访问级别:
访问容器中的内容
用户可通过两种方式访问容器中的内容:
容器权限
可以通过两种方式向用户分配容器权限:
- 直接成员身份。 用户直接添加为具有特定权限的容器的成员。
- 可传递成员身份。 用户是 Microsoft 365 组 的成员,该组本身是具有特定权限的容器的成员。
容器的成员身份 授予用户容器权限。 这些权限定义用户在给定容器上拥有的访问级别。 容器权限仅适用于代表用户的访问,而不适用于在没有用户的情况下进行访问。 在没有用户的情况下访问容器的 SharePoint Embedded 应用程序获取在其 容器类型应用程序权限 中定义的完全访问权限。
重要
通过委托调用创建新容器的调用用户会自动分配“所有者”角色。
| 权限 | 说明 |
|---|---|
| 读者 | 此角色允许用户读取容器的属性和内容。 |
| 作家 | 此角色具有读者拥有的所有权限,以及创建、更新和删除容器内内容以及更新适用容器属性的权限。 |
| Manager | 此角色具有编写者拥有的所有权限,以及管理容器成员身份的权限。 |
| Owner | 此角色具有管理员拥有的所有权限,以及删除容器和还原已删除的容器的权限。 |
访问容器中的特定项
容器中的特定项可以通过 driveItem 邀请 或 权限创建 终结点与用户共享。 共享授予用户对特定项的访问权限,但不授予用户访问容器本身或容器中任何其他项的权限。 有关支持的访问级别的信息,请参阅 权限角色。
注意
有关共享的详细信息,请参阅 SharePoint Embedded 中的共享和权限。
管理使用租户中安装的 SharePoint Embedded 应用程序
SharePoint Embedded 管理员可以 管理 在使用 租户中安装的所有 SharePoint Embedded 应用程序。 若要详细了解如何在使用租户中管理已安装的应用程序,请参阅 管理使用租户中安装的 SharePoint Embedded 应用程序。
注意
全局管理员 拥有 SharePoint Embedded 管理员拥有的所有权限以及更多权限,因此他们还可以管理使用租户中安装的 SharePoint Embedded 应用程序。 但是,应分配执行管理任务所需的最低特权角色,因此建议使用 SharePoint Embedded 管理员角色来管理 SharePoint Embedded 应用程序。
管理在拥有租户中创建的 SharePoint Embedded 应用程序
SharePoint Embedded 管理员可以 管理 在拥有 租户中创建的所有 SharePoint Embedded 应用程序。 此外,可将任何不是外部标识的Microsoft Entra用户分配为容器类型的所有者。 容器类型所有者可以管理该特定容器类型。 若要详细了解如何管理在拥有租户中创建的应用程序,请参阅 SharePoint Embedded 开发人员管理员。
容器类型所有者功能
容器类型所有者通过 fileStorageContainerType 资源的权限导航属性进行管理。 每个权限条目都有一个 角色, owner 并通过 grantedToV2标识用户。 可以通过以下方式管理所有者:
- 自动分配: 创建容器类型的 用户会自动分配为所有者。
-
添加所有者:用于
POST /containerTypes/{id}/permissions为每个容器类型添加最多三个所有者。 -
删除所有者:用于
DELETE /containerTypes/{id}/permissions/{id}删除所有者。 -
读取所有者:使用
GET /containerTypes/{id}?$expand=permissions或GET /containerTypes/{id}/permissions检索容器类型所有者。
在委托模式下将应用程序与 FileStorageContainerType.Manage.All 配合使用时,容器类型所有者可以在拥有的租户上执行以下操作:
- 创建、读取、更新和删除 他们拥有的容器类型。 非管理员所有者只能管理容器类型,这些类型显示在权限集合中,并且调用应用与拥有的应用程序匹配。
- 通过权限终结点在他们拥有 (的容器类型上添加和删除其他所有者)
- 创建 他们拥有的容器类型的容器,只要调用委托 (非仅应用)
注意
创建容器类型的用户会自动分配为所有者。 外部标识 (来宾用户) 无法分配为容器类型所有者,并且无法执行所有者操作。
重要
容器类型所有者仅存在于拥有租户中。 在使用租户中注册容器类型时,所有者信息 不会 传播到该租户。 例如,如果 Contoso 创建具有所有者的容器类型并将其注册到 Fabrikam 中,则 Fabrikam 的租户中不存在这些 Contoso 用户,并且该租户中没有所有者功能。
重要
容器类型所有者功能是用户权限。 有效访问权限是应用程序权限 (Microsoft Graph 权限) 和用户权限 (所有者角色) 的交集。 应用程序必须具有足够的 Graph 权限才能授予交集所需的访问权限。
异常访问模式
目前,有两种类型的操作具有特殊的访问模式:
重要
请考虑这些特殊访问模式对应用程序和其他应用程序如何访问容器类型中的 SharePoint Embedded 内容的影响。
涉及搜索 SharePoint Embedded 内容的操作
本部分仅引用 搜索内容中的搜索方案,而不是枚举方案。
若要对 SharePoint Embedded 内容使用Microsoft搜索,必须请求委托Files。Read.All Microsoft FileStorageContainer.Selected 之上的 Graph 权限,通常用于 SharePoint Embedded 访问。 在此功能的预览阶段,Files。Read.All 应用程序权限授予应用程序对所有 SharePoint Embedded 内容搜索功能的访问权限。
注意
Microsoft SharePoint Embedded 内容的搜索支持以预览版提供,随时可能更改。 对 SharePoint Embedded 内容进行Microsoft搜索的访问要求将与将来的 SharePoint Embedded 授权模型保持一致。 请继续关注。
需要用户许可证的操作
SharePoint Embedded 旨在工作,无需最终用户向其分配任何类型的Microsoft 365 个产品许可证。 但是,某些操作尚未遵守此原则。
列出容器
如果代表没有 OneDrive 的用户调用 列表容器 操作,则返回 403 禁止 响应代码。 计划很快删除此依赖项。 在没有用户上下文 (仅应用模式) 调用时,此依赖项不适用于列表容器操作。
在 Office 文档中提及用户
常见的 Office 体验 包括查看文档和向这些文档添加注释。 若要在人员选取器中 @mentions 显示用户,需要为其分配Microsoft 365 许可证。
下一步操作
下面是接下来可以采取的一些操作:
配置 SharePoint Embedded 应用程序清单, (可以使用 Microsoft Entra PowerShell 或 Azure CLI) 请求对拥有租户所需的权限:
- 添加 Microsoft Graph 权限 FileStorageContainerType.Manage.All ,以在 拥有 租户上创建容器类型:
-
resourceAppId:
00000003-0000-0000-c000-000000000000 -
类型:
Role -
ID:
8e6ec84c-5fcd-4cc7-ac8a-2296efc0ed9b
-
resourceAppId:
- 添加 Microsoft Graph 权限 FileStorageContainerType.Manage.All ,以在 拥有 租户上创建容器类型:
在拥有的租户上向应用程序授予管理员许可
在拥有的租户上创建新的容器类型。
重新配置 SharePoint Embedded 应用程序清单 ,以仅请求对使用租户所需的权限:
删除 Microsoft Graph 权限 FileStorageContainerType.Manage.All**,因为只需在 拥有 租户上创建容器类型即可:
resourceAppId:
00000003-0000-0000-c000-000000000000类型:
RoleID:
8e6ec84c-5fcd-4cc7-ac8a-2296efc0ed9b注意
在 拥有 租户上创建容器类型后,应从应用程序的清单中删除 FileStorageContainerType.Manage.All 权限。 应用程序在 使用 租户时不需要此项,只需在 拥有 的租户上创建容器类型。 未能从应用程序清单中删除此权限将导致客户担心应用程序请求的权限过多。
添加 Microsoft Graph 权限 FileStorageContainerTypeReg.Selected ,以在 使用 租户上注册容器类型:
-
resourceAppId:
00000003-0000-0000-c000-000000000000 -
类型:
Role -
ID:
2dcc6599-bd30-442b-8f11-90f88ad441dc
-
resourceAppId:
添加 Microsoft Graph 权限 FileStorageContainer.Selected ,以代表用户访问 使用 租户上的容器:
-
resourceAppId:
00000003-0000-0000-c000-000000000000 -
类型:
Scope -
ID:
085ca537-6565-41c2-aca7-db852babc212
-
resourceAppId:
(可选)添加 Microsoft Graph 权限 FileStorageContainer.Selected 以在没有用户的情况下访问 使用 租户上的容器:
-
resourceAppId:
00000003-0000-0000-c000-000000000000 -
类型:
Role -
ID:
40dc41bc-0f7e-42ff-89bd-d9516947e474
-
resourceAppId:
在使用租户 (向应用程序授予管理员同意,这可能与拥有租户) 相同。
在使用的租户上注册容器类型。
注册完成后,从应用程序清单中删除 FileStorageContainerTypeReg.Selected 。
注意
注册容器类型后,应从应用程序的清单中删除 FileStorageContainerTypeReg.Selected 权限。 仅在注册设置期间需要此权限。 注册后保留它会不必要地增加应用程序的权限图面。
在使用租户上创建容器