适用于: 开发 人员
在 SharePoint Embedded 应用程序创建容器或访问使用租户中的内容之前,请注册容器类型应用程序权限。
首先完成 创建并配置容器类型 ,以便拥有容器类型 ID 和拥有应用程序。
为何需要注册
在使用该租户中注册容器类型之前,SharePoint Embedded 应用程序无法与使用租户中的容器交互。
注册控件:
- 哪些应用程序 ID 可以访问容器类型。
- 每个应用程序具有的委托权限。
- 每个应用程序具有哪些仅限应用的权限。
- 来宾应用程序是否可以与拥有应用程序的容器交互。
如果注册缺失或不完整,以后的调用可能会失败并出现访问被拒绝错误。
了解谁可以注册
只有容器类型的拥有应用程序才能调用使用租户中的注册 API。
拥有的应用程序必须具有:
- 安装在使用租户上的服务主体。
- 管理员同意在使用租户中执行注册。
-
FileStorageContainerTypeReg.SelectedMicrosoft Graph 权限 (用户委托的或仅限应用的) 。 - Microsoft Graph 资源的有效令牌。
注意
Microsoft Graph v1.0 中提供了容器类型注册 API。 当拥有的应用程序代表 (委派) 的用户调用注册 API 时,必须为该用户分配 SharePoint Embedded 管理员 或 全局管理员 角色。 在没有用户上下文 (仅限应用的) 调用时,它将使用客户端凭据授予流。
授予管理员同意
要求使用租户管理员向拥有的应用程序授予管理员同意。
使用Microsoft 标识平台管理员同意终结点:
https://login.microsoftonline.com/{consuming-tenant-id}/v2.0/adminconsent?client_id={owning-app-clientid}&scope=https://graph.microsoft.com/.default&redirect_uri={spe-app-redirect-uri}
为载入流配置成功和错误处理。
有关国家云终结点,请参阅国家云上的Microsoft 标识平台终结点。
获取用于注册的令牌
使用委托身份验证或仅限应用的身份验证进行注册。
注册需要:
- Microsoft
FileStorageContainerTypeReg.SelectedGraph 权限。 - 对于仅限应用的调用, 客户端凭据授予流。
- 对于委派呼叫,具有 SharePoint Embedded 管理员或全局管理员角色的已登录用户。
注册容器类型权限
调用使用租户中的注册终结点。
PUT https://graph.microsoft.com/v1.0/storage/fileStorage/containerTypeRegistrations/{containerTypeId}
{containerTypeId} 是在拥有租户中创建的容器类型 ID。
在请求正文中,为容器类型提供应用程序权限授予。
向拥有的应用授予权限
常见的第一个注册向拥有的应用授予对委托和仅限应用的调用的完全权限。
{
"applicationPermissionGrants": [
{
"appId": "71392b2f-1765-406e-86af-5907d9bdb2ab",
"delegatedPermissions": ["full"],
"applicationPermissions": ["full"]
}
]
}
将示例应用 ID 替换为拥有的应用程序 ID。
警告
对生产使用最低特权。 仅当应用程序需要完全容器类型访问权限时授予 full 。
向来宾应用授予权限
拥有的应用还可以为另一个应用程序注册权限。
当来宾应用需要定义的工作负载(例如备份或处理)时,请使用此模式。
{
"applicationPermissionGrants": [
{
"appId": "71392b2f-1765-406e-86af-5907d9bdb2ab",
"delegatedPermissions": ["full"],
"applicationPermissions": ["full"]
},
{
"appId": "89ea5c94-7736-4e25-95ad-3fa95f62b6",
"delegatedPermissions": ["read", "write"],
"applicationPermissions": ["none"]
}
]
}
将这两个应用 ID 替换为应用程序。
权限值
| 权限 | 用途 |
|---|---|
None |
不授予任何权限。 |
ReadContent |
读取此类型的容器中的内容。 |
WriteContent |
在此类型的容器中编写内容。 |
Create |
创建此类型的容器。 |
Delete |
删除此类型的容器。 |
Read |
读取容器元数据。 |
Write |
更新容器元数据。 |
EnumeratePermissions |
枚举容器成员和角色。 |
AddPermissions |
添加容器成员。 |
UpdatePermissions |
更新现有成员身份。 |
DeletePermissions |
删除其他成员。 |
DeleteOwnPermission |
删除调用方自己的成员身份。 |
ManagePermissions |
管理容器角色分配。 |
ManageContent |
管理此类型的容器的内容。 |
Full |
授予所有权限。 |
注意
WriteContent如果没有ReadContent,则无法授予 。
验证注册
成功的注册将 201 Created 返回响应正文中配置的权限。
注册成功后:
- 确认响应包含预期的应用 ID。
- 确认委托数组和仅限应用的数组是否与预期授权匹配。
- 获取具有 SharePoint Embedded 权限的 Microsoft Graph 令牌。
- 尝试与注册的权限匹配的低风险操作。
- 继续 配置身份验证和授权。
排查同意问题
| 症状 | 可能的原因 | 操作 |
|---|---|---|
401 Unauthorized |
缺少或无效的令牌 | 请求有效的仅限应用的令牌。 |
403 Forbidden |
应用缺少权限或未拥有应用 | 确认 FileStorageContainerTypeReg.Selected、同意和应用 ID。 |
404 Not Found |
容器类型不存在 | 验证 ID 和租户。 |
| 在 Graph 调用上拒绝访问 | 注册缺失或不足 | 使用所需的权限重新注册。 |
| 管理员找不到隐藏的权限 | 门户不会公开它 | 使用管理员同意 URL。 |
安全重新注册
可以调用注册 API 的次数没有限制。
上一次成功的注册调用将确定使用租户中使用的设置。
使用安全更新过程:
- 生成完整的注册有效负载。
- 包括应保留访问权限的所有应用。
- 提交注册调用。
- 验证响应。
- 为每个应用角色运行冒烟测试。
重要
除非希望生成的注册仅包含应用程序和权限集,否则不要发送部分有效负载。
后续步骤
在配置身份验证和授权中 配置令牌和授权流。