SharePoint 中的加载项权限

在阅读本文之前,应首先熟悉 SharePoint 加载项的授权和身份验证主题。

SharePoint 加载项在安装过程中向安装它的用户请求它所需的权限。 加载项的开发人员必须通过加载项清单文件请求特定加载项能够运行的必要权限。 (访问 SharePoint 但未安装到 SharePoint 网站的设备和 Web 应用,必须在运行时由执行加载项的用户授予权限。有关详细信息,请参阅 SharePoint 外接程序的授权代码 OAuth 流.)

用户只能授予他们拥有的权限。 用户必须授予加载项请求的所有权限或不授予任何权限。 不可以进行选择性授予。 (对于即时请求权限的加载项,只有拥有对加载项试图访问的 SharePoint 资源的“管理”权限的用户才能运行加载项,即使加载项仅要求较低的权限,如“读取”)。

已授予加载项的权限也存储在 SharePoint 场或 SharePoint Online 租赁的内容数据库中。 它们不使用安全令牌服务进行存储,如 Microsoft Azure 访问控制服务 (ACS)。 当用户首次授予加载项权限时,SharePoint 会从 ACS 获取有关加载项的信息。 然后,SharePoint 将关于加载项的基本信息以及加载项的权限存储在加载项管理服务和内容数据库中。 有关 ACS 的详细信息,请参阅创建使用低信任授权的 SharePoint 加载项

重要

作为 Azure Active Directory (Azure AD) 的一项服务,Azure 访问控制 (ACS) 将于 2018 年 11 月 7 日停用。 此停用不会影响使用 https://accounts.accesscontrol.windows.net 主机名(不受此停用影响)的 SharePoint 加载项模型。 有关详细信息,请参阅停用 Azure 访问控制对 SharePoint 加载项的影响

如果删除了向其加载项授予权限的对象,则相应的授权也会被删除。 回收向其加载项授予权限的对象时,SharePoint 不修改相应的授权。 这样一来,如果从回收站中还原对象,则授权仍保持不变。

删除外接程序时,将在从其删除了外接程序的范围中撤消向外接程序授予的所有权限。 这是为了确保当用户从 SharePoint 删除某个外接程序后,该外接程序不会使用其凭据继续以远程方式访问受保护的 SharePoint 资源。

加载项权限的类型和权限范围

SharePoint 外接程序使用权限请求指定正常运行所需的权限。 权限请求同时指定外接程序所需的权限以及所需权限所属范围。 请求这些权限作为外接程序清单的一部分。

权限请求范围指示权限请求所适用的 SharePoint 层次结构中的位置。

注意

SharePoint 加载项具有其自己的标识,并且是一个安全主体,称为加载项主体。 与用户和组一样,加载项主体具有某些权限。 加载项主体对加载项 Web 具有完全控制权,因此只需向主机 Web 或加载项 Web 以外的其他位置请求对 SharePoint 资源的权限。 有关加载项 Web 的详细信息,请参阅 SharePoint 加载项体系结构和开发前景的重要方面SharePoint 中的主机 Web、加载项 Web 和 SharePoint 组件

SharePoint 支持内容数据库和租赁中的四个不同的权限范围,如表 1 所示。 权限范围以 URI 命名,其中包括“http:”前缀,但它们不是 URL,并且不包含占位符。 本表和本文中的权限范围是文本字符串。

表 1. SharePoint 外接程序权限请求范围 URI 和说明

范围 范围 URI 说明
租赁 http://sharepoint/content/tenant 安装外接程序的租户。 包括此范围的所有子级。
网站集 http://sharepoint/content/sitecollection 安装外接程序的网站集。 包括此范围的所有子级。
网站 http://sharepoint/content/sitecollection/web 安装外接程序的网站。 包括此范围的所有子级。
列表 http://sharepoint/content/sitecollection/web/list 安装加载项的网站中的单个列表。

当提示安装加载项的用户授予权限时,该对话框使用户能够选择向其加载项授予权限的一个列表。

如果加载项需要对多个列表的权限,它必须请求对 Web 范围的权限。

此外,由于开发人员无法控制用户选择哪个列表或告诉用户要选择哪个列表,因此,如果外接程序 必须 具有权限 (但有一种方法可将用户选择范围缩小到某些列表子集,则必须使用 Web 范围:请参阅 具有关联 properties 的权限请求范围。)

如果向外接程序授予了对其中一个范围的权限,则该权限适用于范围的所有子级。 例如,如果授予了外接程序对网站的权限,则将授予外接程序对网站中所包含的每个列表以及每个列表中包含的所有列表项的权限。

由于权限请求不包含有关安装加载项的网站集拓扑的信息,因此范围是以类型表示,而不是以特定实例的 URL 表示。 将用 URI 表示这些范围类型。 对存储在 SharePoint 内容数据库中的资源的权限按以下 URI 进行整理:http://sharepoint/content

加载项权限和用户权限之间的区别

权限指示允许外接程序在请求的范围内执行的活动。 SharePoint 在内容数据库中支持下列四个权限级别。 对于每个范围,外接程序可具有下列权限:

  • 阅读
  • 写入
  • 管理
  • 完全控制

注意

有关读取、写入、管理和完全控制权限的详细信息,请参阅规划加载项权限管理

注意

这些权限对应于 SharePoint 的默认用户权限级别:读取者、参与者、设计者和完全控制。 有关用户权限级别的详细信息,请参阅用户权限和权限级别。加载项权限名称与 SharePoint 用户角色权限名称不匹配,目的是为了避免混淆用户角色权限和加载项权限。 由于自定义与 SharePoint 用户角色关联的权限不会影响加载项权限请求级别,因此加载项权限名称与对应的 SharePoint 用户角色不匹配,但完全控制权限除外,它不可通过权限管理用户界面进行自定义。

此外:

  • 对于仅搜索,加载项只能具有查询权限。

  • 对于某些 Microsoft Project Server 2013 范围,还有 SubmitStatus 权限或 Elevate 权限。 对于 Project Server 2013 的大多数范围,仅提供“读取”和“写入”权限。 有关详细信息,请参阅本文中的了解加载项权限的类型和权限范围部分。

  • 对于分类,仅提供“读取”和“写入”权限。

注意

Office 应用商店应用对加载项可以请求的权限类型有一些限制。 有关详细信息,请参阅本文前面的 外接程序权限的类型和权限范围 部分。

与 SharePoint 用户角色不同,这些权限级别不可进行自定义。 这是为了确保向外接程序授予权限请求时,保证外接程序具有一组可预计的功能,并且它不必对授予的权限少于其所预期的权限这一可能性负责。

用户不能授予他/她自己不具有的外接程序权限。 如果用户尝试安装请求超过用户所具有权限的外接程序,将向用户显示一条错误消息,通知用户他们没有足够的权限向外接程序授予请求的权限。

将忽略对 SharePoint 未知的权限。 这意味着,如果外接程序请求 SharePoint 无法识别的权限,则仍将安装外接程序,但不会提示用户授予权限,并且不会向外接程序授予该权限。

可用范围和权限以及关于 Office 应用商店应用权限的限制

不同的范围具有不同的可供外接程序请求的权限集。 本节介绍可供每个范围使用的权限集。 此外,它重点介绍了通过 Office 商店出售的 SharePoint 外接程序的限制。

Office 商店应用程序的权限

仅允许 Office 商店应用程序使用读取、写入和管理权限。 如果您尝试将应用程序提交给需要完全控制权限的 Office 商店,则您的应用程序的提交将受阻。 由于阻止位于 Office 商店提交管道中,因此请求管理权限之外的权限的应用程序仍将通过外接程序目录部署。

列表内容和库内容的权限请求范围

表 2 显示了列表和库内容的权限请求范围,并列出了可为每个范围 URI 指定的权限。

注意

表 2 中使用的 URI 是文本值。

表 2. SharePoint 外接程序权限范围 URI 和可用权限

范围 URI 可用权限
http://sharepoint/content/sitecollection 读取、写入、管理、完全控制
http://sharepoint/content/sitecollection/web 读取、写入、管理、完全控制
http://sharepoint/content/sitecollection/web/list 读取、写入、管理、完全控制
http://sharepoint/content/tenant 读取、写入、管理、完全控制

以下代码演示如何使用 AppManifest.xml 文件中的权限范围和权限。 在第一个示例中,外接程序需要列表范围的写入访问权限。

  <?xml version="1.0" encoding="utf-8" ?>
  <App xmlns="http://schemas.microsoft.com/sharepoint/2012/app/manifest"
      ProductID="{4a07f3bd-803d-45f2-a710-b9e944c3396e}"
      Version="1.0.0.0"
      SharePointMinVersion="15.0.0.0"
      Name="MySampleAddIn"
  >
    <Properties>
      <Title>My Sample Add-in</Title>
      <StartPage>~remoteAppUrl/Home.aspx?{StandardTokens}</StartPage>
    </Properties>

    <AppPrincipal>
      <RemoteWebApplication ClientId="1ee82b34-7c1b-471b-b27e-ff272accd564" />
    </AppPrincipal>

    <AppPermissionRequests>
      <AppPermissionRequest Scope="http://sharepoint/content/sitecollection/web/list" Right="Write"/>
    </AppPermissionRequests>
  </App>

以下代码演示要求 Web 范围的读取访问权限和列表范围的写入访问权限的加载项。

  <?xml version="1.0" encoding="utf-8" ?>
  <App xmlns="http://schemas.microsoft.com/sharepoint/2012/app/manifest"
      ProductID="{4a07f3bd-803d-45f2-a710-b9e944c3396e}"
      Version="1.0.0.0"
      SharePointMinVersion="15.0.0.0"
      Name="MySampleAddIn"
  >
    <Properties>
      <Title>My Sample Add-in</Title>
      <StartPage>~remoteAppUrl/Home.aspx?{StandardTokens}</StartPage>
    </Properties>

    <AppPrincipal>
      <RemoteWebApplication ClientId="6daebfdd-6516-4506-a7a9-168862921986" />
    </AppPrincipal>

    <AppPermissionRequests>
      <AppPermissionRequest Scope="http://sharepoint/content/sitecollection/web" Right="Read"/>
      <AppPermissionRequest Scope="http://sharepoint/content/sitecollection/web/list" Right="Write"/>
    </AppPermissionRequests>
  </App>

其他 SharePoint 功能的权限请求范围

下表列出了其他 SharePoint 功能的权限请求范围。

注意

这些表中使用的 URI 为文本值。

表 3 显示了 Business Connectivity Services (BCS) 的权限请求范围。 它还列出了可以为该范围 URI 指定的权限。

表 3. BCS 外接程序权限请求范围 URI 和可用权限

范围 URI 可用权限
http://sharepoint/bcs/connection 阅读

注意

有关 BCS 加载项权限请求范围的详细信息,请参阅 SharePoint 中的 Business Connectivity Services


表 4 显示的是搜索的权限请求范围。 它还列出了可以为该范围 URI 指定的权限。

表 4. 搜索外接程序权限请求范围 URI 和可用权限

范围 URI 可用权限
http://sharepoint/search QueryAsUserIgnoreAppPrincipal

注意

有关搜索加载项权限请求范围的详细信息,请参阅 SharePoint 中的搜索


表 5 显示的是 Project Server 2013 的权限请求范围。 它还列出了可为每个范围 URI 指定的权限。 > [!注意] >应在具有所需 Project Server 功能和服务的环境中测试使用 Project Server 2013 功能和服务的外接程序。 SharePoint Server 默认未安装知道 Project Server 2013 权限范围的 Project Server 2013 权限提供程序程序集。 有关详细信息,请参阅 Project Server 2013 开发人员文档。

表 5. Project Server 外接程序权限请求范围 URI 和可用权限

范围 可用权限
http://sharepoint/projectserver 管理
http://sharepoint/projectserver/projects 读取、写入
http://sharepoint/projectserver/projects/project 读取、写入
http://sharepoint/projectserver/enterpriseresources 读取、写入
http://sharepoint/projectserver/statusing SubmitStatus
http://sharepoint/projectserver/reporting 阅读
http://sharepoint/projectserver/workflow 提升

表 6 显示的是社会功能的权限请求范围。 它还列出了可为每个范围 URI 指定的权限。

表 6. 社交功能外接程序权限请求范围 URI 和可用权限

范围名称 说明 可用权限
用户配置文件
http://sharepoint/social/tenant
用于访问所有用户配置文件的权限请求范围。 只能更改个人资料图片;对于 SharePoint 外接程序,所有其他用户配置文件属性都是只读的。必须由租户管理员安装。 读取、写入、管理、完全控制
核心
http://sharepoint/social/core
用于访问用户关注的内容和微博功能使用的共享元数据的权限请求范围。 此范围仅适用于支持关注内容的个人网站。 如果应用程序安装在任何其他类型的网站上,则使用租户范围。 读取、写入、管理、完全控制
新闻源
http://sharepoint/social/microfeed
用于访问用户源或团队源的权限请求范围。 此范围适用于支持微博的个人网站或适用于激活"网站源"功能的工作组网站。 如果应用程序安装在任何其他类型的网站上,则使用租户范围。 读取、写入、管理、完全控制
http://sharepoint/social/trimming 此权限请求范围用于确定是否在应用程序的社交源中显示经过安全修整的内容。 如果未授予这种高信任权限,有些内容(例如应用程序没有权限的文件和网站的相关活动)将从返回到应用程序的源数据中修整掉,即使用户有足够的权限也是如此。 必须手动将此权限添加到应用程序的清单文件中。 读取、写入、管理、完全控制

注意

有关社交功能加载项权限请求范围的详细信息,请参阅访问社交功能的加载项权限请求


表 7 显示的是分类的权限请求范围。 它还列出了可以为该范围 URI 指定的权限。

表 7. 分类外接程序权限请求范围 URI 和可用权限

范围 URI 可用权限
http://sharepoint/taxonomy 读取、写入

注意

有关分类加载项权限请求范围的详细信息,请参阅添加 SharePoint 功能

包含关联属性的权限请求范围

列表权限请求范围具有其他可选属性。 列表范围可以使用名称为 BaseTemplateId 的属性以及与列表基本模板对应的整数值,如以下标记示例所示。 如果没有基本模板 ID,安装加载项的用户可以选择授予它对 Web 中所有列表中一个列表的权限。 指定基本模板 ID 可将用户的选择限制为与 BaseTemplateId 属性指定内容匹配的列表集合。

BaseTemplateId 属性 (Property) 是子元素,不是 AppPermissionRequest 元素的属性 (Attribute)。 以下代码演示如何使用 BaseTemplateId 属性。

  <AppPermissionRequest Scope="http://sharepoint/content/sitecollection/web/list" Right="Write">
    <Property Name="BaseTemplateId" Value="101"/>
  </AppPermissionRequest>

表 8. 包含关联属性的权限请求范围

范围 URI 属性 Type
http://sharepoint/content/sitecollection/web/list BaseTemplateId Integer

注意

有关 BaseTemplateId 和列表基本模板对应的整数值的详细信息,请参阅 List 元素(列表)Type 属性。

管理加载项权限并排查故障

安装到 SharePoint 的 SharePoint 加载项在安装时被授予权限。 安装在其他平台但访问 SharePoint 的加载项由运行加载项的用户在运行时授予权限。 有时,第一种加载项可能会丢失其权限。 可以使用以下步骤重新授予加载项权限:

  1. 在加载项似乎已失去权限的网站的“网站内容”页面上,选择加载项的磁贴上的“...”按钮。 这将打开包含“权限”链接或另一个“...”按钮的标注。

  2. 选择“权限”链接(如果存在)并跳过下一步,或者选择“...”按钮。

  3. 选择“权限”链接。

  4. 在打开的页面上,选择最后一个句子中的此处。 这将重新授予加载项权限并将浏览器重定向回网站内容页面。

重新为应用授予权限


当您开发外接程序或进行外接程序故障排除时,可能会想更改或重新授予已安装外接程序的权限。 您可以通过执行以下步骤实现此目的:
  1. 转到 http://{SharePointWebSite}_layouts/15/AppInv.aspx,其中 <SharePointWebSite> 是安装加载项的网站 URL。 请注意,不要在 URL 上添加任何查询参数。 如果 URL 完全如图所示,则你需要的窗体仅显示在此页面上。

  2. 在“加载项 ID”框中输入加载项的 ID(也称为客户端 ID),然后选择“查找”。 然后,使用加载项的相关信息填充窗体上的其他框。

  3. 使用与你在加载项清单中输入的完全相同的权限请求填写“权限请求 XML”框。 例如,请参阅列表内容和库内容的权限请求范围。 有关完整的语法信息,请参阅 AppPermissionRequest 元素

  4. 选择“创建”

特定范围的加载项的权限在从该范围移除时即被吊销。

为什么加载项无法对用户隐藏

任何具有 SharePoint 网站浏览权限的用户都可以启动安装在网站上的任何 SharePoint 加载项。 用户是否可以对加载项执行任何操作取决于用户的其他权限以及加载项使用的授权策略类型。 如果用户尝试对不具备相应操作权限的加载项执行操作,并且对 SharePoint 的调用使用的是用户加载项策略,调用将失败。

另请参阅