图月志 2018-04-09
在我们进行的日常工作中,是由一部分信息需要 Share 给其他人或者组织的。SharePoint 虽然支持在某个 Site Collection 中互通信息,但是跨 Site Collection 的数据分享就很难通过传统方法实现。一般来说,我们可以使用 Search Content Web Part 来实现其他 Site Collection 的数据表示,但是一旦需要表示的内容发生了变化,与已经写好的 Query text 不相符,表示的内容就有可能出现不全面或者们不能及时更新的问题。
那么如何准确,及时的更新 SharePoint 中其他 Site Collection 中发布的信息呢?我们可以使用一项 SharePoint 2010 中就已经存在了的“老爷爷”功能,RSS Feed。
RSS(Really Simple Syndication) - 简易信息聚合,是一种在互联网上广泛被采用的内容包装和投递协议。在互联网发展的前期就已经出现,1999 由网景公司发布 v0.91 版本,此后一直保持更新到 v2.0 版本。其具有以下三个特点:
· 来源多样的个性化“聚合”特性。
· 信息发布的时效、低成本特性。
· 无“垃圾”信息、便利的本地内容管理特性。
那么 SharePoint 对 RSS 的支持也就是一种对主流互联网功能的支持。当前,SharePoint 的 List 和 Library 均支持 RSS Feed 功能。
说了这么多前提条件,那么 SharePoint 的 RSS Feed 功能究竟如何使用呢?在进行 RSS 的使用之前,我们先要了解一下 RSS Feed 的工作原理。
在 SharePoint Server 2016 中,RSS Feed 的应用是需要访问特定的 permission provider,如果是在 Share Point 内部访问,RSS Feed,我们需要匿名访问权限或者 Windows - Kerberos 认证;如果是域外分享或者 SharePoint 外的环境进行访问,那么就只可以使用匿名认证。
其原因可以参考下图:
从此图可以看出 RSS Feed 的权限认证使用了网页登陆时的认证,并将匿名访问的认证通过 RSS Viewer 传递给了目标 RSS 源。RSS 源确认权限信息(匿名认证也是一种认证) 后将数据源内的信息传递给 RSS Viewer。这时 RSS Viewer 内就可以显示出 RSS Source 中的内容了。这要求RSS 源所在的被参照方 Site 支持匿名访问,这并不是说携带其他认证信息的访问就能访问 RSS 源了,而是无论何种 SharePoint 支持的认证,都可以转换为匿名认证对相关的数据进行访问。所以 RSS 源还是仅接受匿名访问的请求,其他携带权限信息的请求是会被拒绝的。
从此图可以看出,在 SharePoint 内部,并使用 Kerberos 认证的 RSS Feed 需要参照方和被参照方均支持 Kerberos 认证,且 RSS 可以依据所在 List / Library 的权限配置信息和访问的 Kerberos Token 来决定返回给请求端 RSS Viewer 的信息。也就是说, 利用 Kerberos 认证的 SharePoint Site Collection 间发布的 RSS Feed 是可以根据权限来控制表示在参照端 RSS Viewer 上的内容。
了解了 RSS Feed 的工作过程,我们就来进行一下 RSS Feed 的相关操作。如果采用 Kerberos 认证的的 RSS Feed ,那么认证的部分只需要在 User 端配置 SPN 信息,以及在 Web Application 的 Authentication Provider 中选择 Windows - Kerberos 类型就可以完成配置了。而使用匿名访问的情况下,我们需要在 Web Application 配置中的 Authentication Provider 处打开匿名认证的同时,在目标 Site 上(或者 List / Library 上)也打开匿名认证,来保证目标 RSS Source 的可访问性。
下面以实例表示如何开启一个匿名的 RSS Feed 功能:
1,首先打开 Web Application Management,选择 RSS Source 所在的 Web Application 后,点击 Ribbon 上的 [Authentication Provider] 后,勾选匿名访问 [Enable anonymous access] 后,点击确定。
2,打开 RSS Feed 所在的 Site ,并进入 Site Permission Setting 设置页面,点击 Ribbon 上的 [Anonymous Access] ,并在设置界面上将 Anonymous user can access: 的设定改为 [Entire Web site],之后点击 [OK],保存设定。
3,打开要使用 RSS Feed 的 Library,在 Ribbon 的 Library Tag 中点击 RSS Feed 按钮,进入 RSS Feed 的发布页面。
由于我的 Site Collection 原生语言是日语,所以这张图也就变成日语了,请不要在意,因为重点根本不在页面上。
重点在页面的 URL 上,复制这个 URL。这样,发布的动作就已经完成了。下面我们要做的,就是将发布了的 RSS Feed 表示在一个 Web Page 上。
在任意一个页面上,添加 SharePoint 中用于展示 RSS Source 内容的 Web Part ,RSS Viewer Web Part:
加上去之后大概是这个效果:
这个时候我们需要对 RSS Viewer 进行编辑,添加 RSS Source 的 URL。点击 [Open the tool pane],弹出 RSS Viewer 的设置侧边栏:
在 [RSS Feed URL] 上,输入刚才发布的 RSS Source 的数据源的 URL后,点击 [OK] 保存设定。
这样你就可以在 RSS Viewer 上看到 RSS Source 的数据啦:
如果使用了不被支持的认证方式, RSS Viewer 会直接报错,并无法显示出内容,如图:
这种情况就是参照了认证不符合要求的 RSS Source 的错误示例。
需要注意的是,根据我的经验,使用何种认证方式进行请求的信息,是在发布的时间点就写在 Published URL 上的,也就是说,已经出现这个错误提示的 URL,即使将目标 Site / List / Library 修改成被支持的认证方式,也是无法直接使用当前的 URL 进行信息发布的,如要解决这个问题,只能在 RSS 源上重新发布 RSS Feed URL,并将新的 URL 更新到 RSS Viewer 中去。
在 SharePoint 中使用 RSS Feed 的理论和方法就是这些,还有一部分是 Site 上对 RSS Feed 的签名信息的设定,这部分比较简单,我会在对此 blog 的更新中追加到这一篇中,就不开新篇记录了。