SharePoint 加载项的三种授权系统
在 SharePoint 中,SharePoint 加载项是一个身份主体,就像用户一样,必须通过身份验证并得到授权才能使用 SharePoint 资源。 加载项可以使用三种授权系统。 它们不会相互排斥。
了解三个授权系统以及何时使用它们
低信任
提供程序托管的 SharePoint 加载项可以注册到 Microsoft Azure 访问控制服务 (ACS),它会向加载项颁发访问令牌,允许加载项访问加载项安装所在的 SharePoint 租赁或场中的资源。 Azure ACS 是 OAuth 2.0 框架“流”中的受信任令牌颁发者,其中包含 SharePoint 和加载项的远程组件。 使用此系统的加载项可以在 Office 应用商店中出售。 低信任系统主要用于其远程组件托管在云中的加载项。
重要
作为 Azure Active Directory (Azure AD) 的一项服务,Azure 访问控制 (ACS) 将于 2018 年 11 月 7 日停用。 此停用不会影响使用 https://accounts.accesscontrol.windows.net
主机名(不受此停用影响)的 SharePoint 加载项模型。 有关详细信息,请参阅停用 Azure 访问控制对 SharePoint 加载项的影响。
有关创建使用低信任系统的 SharePoint 加载项的详细信息,请参阅创建使用低信任授权的 SharePoint 加载项。
注意
安装加载项的客户必须具有 Office 365 帐户。 向加载项授予访问 Azure ACS 的权限时需要使用此帐户。 但是客户不需要将此帐户用于任何其他目的,在服务器场上完成一些简单的配置任务后,加载项即可安装到本地 SharePoint 场。
高信任
提供程序托管的加载项可以使用数字证书与 SharePoint 建立信任。 高信任系统主要用于其远程组件在本地托管的加载项。 加载项可以安装到未连接到 Internet 的 SharePoint 场。 加载项不能安装到 SharePoint Online,也不能在 Office 商店中出售。
有关创建使用高信任系统的 SharePoint 加载项的详细信息,请参阅创建使用高信任授权的 SharePoint 加载项。
跨域库
如果加载项的业务逻辑使用的是 JavaScript 时,用户既可以选择使用 SharePoint 跨域库来替代低信任和高信任系统,也可以将其作为低信任和高信任系统的补充。 库也适用于以下应用场景:加载项具有云托管的组件,但客户的企业防火墙使其难以使用低信任系统。 用户的浏览器阻止来自其他域的脚本,但库封装一个安全的系统以绕过此限制。 使用该库的加载项可以在 Office 应用商店中出售,并且可以安装到 SharePoint Online 或本地 SharePoint。
有关创建使用跨域库的 SharePoint 加载项的详细信息,请参阅:
OAuth 2.0 框架及其 SharePoint 实现有关的背景信息
三个授权系统中有两个使用 OAuth 2.0 框架。 OAuth 2.0 是一种开放式授权框架。 OAuth 使用一种标准方法从桌面、设备和 Web 应用程序中启用安全授权。 使用 OAuth,用户可以批准应用程序代表他/她执行操作,而无需共享其用户名和密码。
例如,它使用户可以在一个网站上与另一个网站共享其专用资源或数据(联系人列表、文档、照片、视频等),不会要求用户提供他/她到其他网站的凭据(通常是用户名和密码)。
OAuth 使用户能够提供由指定服务提供程序(如 SharePoint)托管的数据的访问令牌。 每个令牌向特定资源提供程序(如 SharePoint 网站)授予在指定时间内(例如 12 小时)对特定资源(例如 SharePoint 文档库中的文档)的访问权限。 这样用户可以向第三方 Web 或桌面应用程序授予对存储在另一个资源或服务提供程序(例如 SharePoint)中的信息的访问权限,而无需共享用户名和密码以及存储在提供程序中的所有数据。
SharePoint 使用 OAuth 2.0 框架令牌传递“流”执行以下操作:
授权 SharePoint 加载项访问 SharePoint 资源的请求。
对 Office 应用商店、加载项目录或开发人员租户中的加载项进行身份验证。
有关 OAuth 和 OAuth 术语的详细信息和背景,请参阅 OAuth.net 和 Web 授权协议 (oauth)。
总而言之,有一个托管受保护资源的资源服务器、资源的所有者、需要访问资源的客户端应用程序,以及在收到资源所有者指示时颁发资源访问令牌的授权服务器。
正式的 OAuth 文档倾向于假定这样一种场景,即每当客户端应用程序运行时,都有一个资源所有者授予对客户端应用程序中的资源的访问权限。 它还假定使用客户端应用程序的人员是资源所有者。
SharePoint 实现会考虑到 SharePoint 资源(如列表)在多个用户之间共享的情况。 此外,在 SharePoint 实现中,SharePoint 加载项在安装时被授予访问权限,而不是在每次运行时;它可以由安装并向其授予访问权限的人员以外的用户运行。 (如果加载项未安装到 SharePoint 上,但会访问 SharePoint 资源(因此,它们仅从广义上来说是“SharePoint 加载项”),运行加载项的用户确实需要在加载项每次运行时授予权限。)
因此,在 SharePoint 实现过程中,OAuth 角色由以下组件扮演:
SharePoint 加载项的远程组件扮演客户端应用程序的角色。
SharePoint 用户扮演资源所有者的角色。
SharePoint 起到资源服务器的作用。
如果使用低信任授权系统,Azure ACS 起到授权服务器的作用。 如果使用高信任系统,加载项本身(连同数字证书)起到授权服务器的作用。
访问令牌不是登录令牌
如上所述,要访问资源,加载项必须从 OAuth 授权服务器请求访问令牌,此服务器之前被资源所有者指定为受信任的安全令牌颁发者 (STS)。 相反,WS 联合身份验证 STS 和安全断言标记语言 (SAML) 被动登录 STS 主要用于颁发登录令牌。
在 SharePoint 中,OAuth STS 不用于颁发登录令牌,也就是说,它们不用作标识提供程序。 因此,你将不会发现用户登录页面、管理中心内的“身份验证提供程序”部分或 SharePoint 内的人员选取器中列出了 OAuth STS。
SharePoint 管理员可以使用 Windows PowerShell 命令启用或禁用 OAuth STS,方式与他们在 SharePoint 中启用或禁用受信任登录提供程序一样。