BCS(Business Connectivity Services)是SharePoint 2010中用于替换原先Microsoft Office SharePoint Server 2007企业版的业务数据目录(Business Data Catalog ,简称BDC)的一项新服务。 BCS相比BDC而言有许多改进,包括回写到数据源的功能,通过类似SharePoint Workspace的Office套件提供脱机功能,增强的工具集以及外部列表等等。
在这篇文章中我们将探讨BCS认证的相关内容,包括你可能会遇到的一些问题,以及克服或解决其中的一些问题的若干方法。
谈到连接后端数据源进行认证,通常不外乎有两种身份验证的类型:用户身份标识和模拟用户权限提升。用户身份标识就是指我们登录网站实所使用的用户标识,直接把它传递给数据源,并返回数据到 SharePoint。用户会根据自身身份标识的不同看到基于该用户身份的内容;模拟用户权限提升时,用户登录时使用他们自己的凭据,但连接数据源时使用另一个用户的凭据,通过模拟其他有权限访问数据源的用户来获取数据。两者各有优缺点。
企业希望将用户的身份传递给数据源,这是一个很普遍的需求。 这种直接传递往往在开发环境中运行良好,可一旦迁移到生产环境就会遭遇失败。究其原因就是众所周知的双跃点问题(Double Hop Issue)。 双跃点问题在BDC时代就已经存在了,BCS中仍然存在该问题。这与其说是一个SharePoint的问题,倒不如说是浏览器/ IIS的问题。当我们通过直通(PassThrough)方式连接到数据源时, Windows身份验证的用户安全令牌只能进行一次跳跃。就是从浏览器到IIS的一跳。在一个开发环境,通常数据库服务器安装在与IIS同一台物理机器上,因此一跳就可以满足要求了。然而,在生产环境中,通常很难碰到只有一台机器的情况,因此凭据传递必须从浏览器到IIS再到SQL。用户因为这两次跳跃从而无法通过验证。
在仍然要保证用户身份的前提下,双跃点问题的一种解决方法是,配置我们的环境使用Kerberos认证。 如果你目前的配置架构中并没有使用Kerberos,想要突然改变一切,让用户都使用Kerberos进行SharePoint身份认证是很困难的,而且也很难得到你的管理员认可。Kerberos身份验证可以通过设置服务器间(比如IIS和SQL)的信任关系来避免双跃点问题。验证合格的凭证,会在IIS服务器上被续签(renew),进而继续用于SQL服务器。
如果传递用户身份对你来说并不重要,那么你可以使用模拟用户的方式进行数据源认证,从而克服双跃点问题。Business Connectivity Services认证中的一个选项是“RevertToSelf”。 当选择RevertToSelf时并不会以用户身份,而是使用了进程帐户(也就是BCS运行时服务所用的帐户)身份进行数据源验证。这也就是意味着,每个SharePoint用户无论其身份如何,都将使用相同的帐户连接到数据源。这听起来像一个安全问题,但实际上这种方式工作的非常好。因为你还可以在SharePoint级别上为每个用户或组指定权限。 比如你可以在SharePoint中指定执行功和写回的权限。这样就可以弥补安全方面的问题。这种方式确实可以称为最佳实践了。因为你可以在SQL里分配每个表,视图,存储过程的权限,然后将定制好的SQL权限直接分配到某个 SharePoint用户帐户。
Business Connectivity Services认证支持的另一种方法是使用安全存储服务(Secure Store Services ,简称SSS)。安全存储服务(SSS)是SharePoint 2007中的单点登录(Single Sign On ,简称SSO)的升级换代。 SSS为我们提供了一个选择,可以将凭据存储在安全存储数据库(驻留于SharePoint服务器)中。然后,凭据以“用户到用户”或“域组到用户”的方式进行映射。这样凭据就可以在SharePoint服务器上进行续签(renew)。 有关SSS 我们会单独在一篇博文中进行讨论。
我们无法做到真正推荐一种BCS认证机制可以用于所有的组织机构或企业公司。因为每个组织都有自己不同的环境配置和管理策略,因此只能提供若干种选择。
在SharePoint Designer 2010里,连接到SQL Server时界面提供了下列认证的选项:
以上我们介绍了BCS身份验证的类型。接下来我们将深入到每一种认证类型的细节,看一下具体如何在SharePoint Designer 2010中设置PassThrough 和 RevertToSelf身份验证模式。
首先介绍一下界面上的这些选择项:
使用用户标识进行连接,其实就是曾在BDC认证中用过的名为直通(PassThrough)的验证方式。这意味着,Windows身份验证的用户安全令牌将被从浏览器传递给IIS,然后再传递到SQL。这个种方式在开发环境中往往没问题,但是部署到生产环境可能会遇到上面谈到的双跃点问题。
剩下的两个选项都是指向安全存储服务(SSS)。SSS将会在接下来的博文中进行全面解释。 SSS允许我们通过Windows用户,或者某个自定义账户,比如一个联盟的SAML用户帐户进行数据源连接。
在上面的对话框中你不会看到“RevertToSelf”的选项。要配置RevertToSelf时,首先要选择 “使用用户标识进行连接”,然后点确定。当连接建立好后,再选择功能区中的“编辑连接属性”,修改身份验证的方式,如下图所示。
这里可以选择是用用户标识(PassThrough)还是BDC标识(RevertToSelf)进行连接。你要确保相应的标识对数据源具有读写权限。如果选择了SSS,你还要进行一些额外的配置步骤。
在接下来的博文中,我们将描述如何在SharePoint 2010中配置安全存储服务(SSS)。
本文将讨论如何在SharePoint Designer 2010中为我们的外部内容类型创建比较与通配符过滤器。这些过滤器可以让我们缩小由后端数据源返回的记录数量,这样不但有助于提高性能,也能够使用户工作起来更加容易,因为他们只需要处理较少的数据就能完成工作。
* SharePoint Designer 2010
* 一个数据源 – 这里我们将使用AdventureWorks数据库的Product表
1. 打开SharePoint Designer 2010
2. 连接到您的 SharePoint网站
3.从网站对象导航中点击“外部内容类型”
4. 点击功能区——>新建——>外部内容类型
5. 给你的外部内容类型起一个有意义的名字 - 只需要在现有的文本编辑单击。
--> - >
6.单击外部内容类型操作一节中的“点击此处发现数据源并定义操作”。进入操作设计器视图。
7. 点击添加连接按钮。选择“SQL Server”
8. 请输入你的连接凭据信息,然后单击确定
9. 展开树状视图,找到'Product'表
10. 右键单击该表,然后选择 '新建读取列表操作'
11. 修改'操作名称'和'操作显示名称'为“所有产品信息”,点击下一步
12. 在 '筛选器参数配置'窗口中点击'添加筛选器参数'
13. 当属性部分显示出来后,修改'数据源元素'为Name并点击'(单击以添加)'
14.输入如下图所示的筛选器信息。我们将在产品名称字段上创建一个通配符筛选器。通配符过滤器可以实现的搜索需求包括:“以下列字符开头”,“结束于”,“包含”和“等于”。可以协助我们按产品名称进行搜索。
15.点击'确定'
16.更改默认值为 *
17.再次点击'添加筛选器参数',这次,我们将过滤ProductID字段。点击'(单击以添加)'超链接。
18.为筛选器取个名字,如产品ID,单击'确定' 。我们不需要修改任何设置,直接用默认的筛选器,这是一个比较筛选器一运算符为“等于”。
19. 点击'确定'
20. 修改运算符为'OR'
21. 点击完成
22. 点击'保存'
23. 该ECT的将被保存到BDC元数据存储中
24. 文档保存好后,我们就可以打开我们的SharePoint站点了
25. 在页面上添加一个'业务数据列表Web部件
26. 点击ECT选择器的图标,弹出ECT选择器
27. 选择产品(AdventureWorks)
28. 点击'确定'
29. Web部件将显示筛选器选项。
30. 输入一个值,如“Bike”并点击'检索数据' - 将回返回所有产品名称中包含“Bike”的数据项。
31. 记下一个产品的ID,然后将'过滤器更改为产品ID,并输入所记下的ID,然后点击'检索数据' -将返回相应ID的产品。
参考资料