SharePoint Framework v1.8新功能: 域隔离的web part (Isolated Web part)

SharePoint Framework 1.8版本正式支持域隔离web part。

1,什么是域隔离webpart(isolated webpart)?

与我们通常说的SPFx客户端web part不同,域隔离的webpart运行在嵌入页面的一个iframe中。如果当前站点是https://contoso.sharepoint.com,则域隔离的webpart会运行在https://contoso-app{guid}.sharepoint.com这个随机生产的域中:

2. 为什么要支持域隔离的webpart?

域隔离的主要意义在于权限隔离。

域隔离的webpart支持webpart独立的权限,这些权限仅为这个域隔离的webpart所使用。所以使用域隔离的webpart调用Azure AD中注册的的application(可以是Graph或者任何其他Azure AD中注册的API)时会更加安全。

下图来自微软官方文档(官方翻译为域独立的webpart):

ä½ç³»ç»ææ¦è¿°è¯´æäºç¬ç« Web é¨ä»¶çå·¥ä½åç

3,创建域隔离的web part:

使用Yeoman模板创建webpart如下,注意在”Will the components in the solution require permissions to access web APIs that are unique and not shared with other components in the tenant"问题后选择”Yes":

创建完成后,在package-solution.json文件中可以看到“isDomainIsolated”属性设置为true。以调用Graph API为例,添加"webApiPermissionRequests"属性并且配置需要的权限如下:

"isDomainIsolated": true,
"webApiPermissionRequests": [
  {
    "resource": "Microsoft Graph",
    "scope": "User.ReadBasic.All"
  },
  {
    "resource": "Microsoft Graph",
    "scope": "Calendars.ReadWrite"
  }
],

其中“webApiPermissionRequests"的作用是申请调用第三方API的权限,这里是申请调用Microsoft Graph API 读写日历的权限和读取用户基本信息的权限。一旦在这里申请权限,在部署时,管理中心的API Management页面中就会出现权限申请,管理员需要批准这些权限申请,我们的webpart才可以使用这些权限。关于在SPFx中调用Graph API,请参见博客:在SharePoint Framework中调用Graph API

4,部署web part到App Catalog(域隔离的webpart仅支持部署到tenant的App Catalog,不支持部署到site collection级别的App Catalog)

部署之后,因为我们之前在”webApiPermissionRequests"属性中配置了Graph API权限申请,所以在管理中心的API Management页面会出现如下需要管理员批准的权限:

为什么说域隔离的webpart会更安全,这里是一个例子,如果普通的SPFx客户端webpart申请Graph权限,需要管理员在API Management中批准的,如下所示:

可以看到这个调用Graph API权限的范围是“Organization-wide”,也就是说如果管理员批准了这个权限申请,那么整个租户中的任何app都可以调用Graph的这个API,这增加了Graph API被滥用的风险。

如果是域隔离的webpart申请Graph的权限,Graph权限的范围则仅仅是当前webpart,即只有这个域隔离的webpart才可以调用这两个Graph API。

5,部署完成后,会自动在Azure中注册一个application:

发布了189 篇原创文章 · 获赞 15 · 访问量 26万+

猜你喜欢

转载自blog.csdn.net/shrenk/article/details/97255363