SharePoint 2010 中的BCS身份验证模式

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时界面提供了下列认证的选项:

 

  • 使用用户标识进行连接
  • 使用模拟Windows标识进行连接
  • 使用模拟自定义标识进行连接

 

以上我们介绍了BCS身份验证的类型。接下来我们将深入到每一种认证类型的细节,看一下具体如何在SharePoint Designer 2010中设置PassThrough 和 RevertToSelf身份验证模式。


首先介绍一下界面上的这些选择项:

用户标识

使用用户标识进行连接,其实就是曾在BDC认证中用过的名为直通(PassThrough)的验证方式。这意味着,Windows身份验证的用户安全令牌将被从浏览器传递给IIS,然后再传递到SQL。这个种方式在开发环境中往往没问题,但是部署到生产环境可能会遇到上面谈到的双跃点问题。

模拟Windows标识

剩下的两个选项都是指向安全存储服务(SSS)。SSS将会在接下来的博文中进行全面解释。 SSS允许我们通过Windows用户,或者某个自定义账户,比如一个联盟的SAML用户帐户进行数据源连接。

RevertToSelf 

在上面的对话框中你不会看到“RevertToSelf”的选项。要配置RevertToSelf时,首先要选择 “使用用户标识进行连接”,然后点确定。当连接建立好后,再选择功能区中的“编辑连接属性”,修改身份验证的方式,如下图所示。



这里可以选择是用用户标识(PassThrough)还是BDC标识(RevertToSelf)进行连接。你要确保相应的标识对数据源具有读写权限。如果选择了SSS,你还要进行一些额外的配置步骤。


在接下来的博文中,我们将描述如何在SharePoint 2010中配置安全存储服务(SSS)。

 

参考资料

Business Connectivity Services Authentication

business connectivity services passthrough & reverttoself

转载于:https://www.cnblogs.com/Sunmoonfire/archive/2010/06/29/1767673.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/299230.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SD卡读写扇区注意事项(转)

源:http://blog.163.com/zhaojun_xf/blog/static/30050580201151410635516/ 在调试SD卡时,大家都喜欢使用扇区进行验证。也就是说,一般都是通过读写扇区数据进行比较,或者读取第0扇区的数据,在通过WinHex软件打开启动扇…

开源软件通识基础:第二周课程回顾与总结

接第一篇《开源软件通识基础:第一周课程回顾与总结》,本文为第二周课程内容的回顾与总结。本导学班在调研全球开源教育与课程的基础上,通过收集、整理、理解、拓展国际最新的前沿开源课程,采取众创的模式,由 X-lab 核心…

mysql数据连接查询_mysql数据库 连接查询

左连接:select 列1,列2,列N fromtableA left join tableBon tableA.列 tableB 【此次表连接成一张大表,完全当成普通表看】where group ,having...照常写例:select goods_id,goods.cat_id,cat_name,goods_name,sho…

在DataGrid中合并单元格行

最近在做项目的时候经常遇到要合并单元格的情况,发现这个东西.net中并没有现成的方法,研究了一下,总结了两种方法。 这个主要都是行合并的,有以下两种情况 1、多行合并为一行,其中将某个或某几个单元格的内容合并起来 …

这些口碑炸裂的BBC神片,就是给孩子最好的生命教育

全世界只有3.14 % 的人关注了爆炸吧知识对孩子来说,好的纪录片就像是打开了一扇新世界的大门,让他们了解了更多大自然的奇妙之处。所以这次我们精心挑选了几部适合儿童观看的纪录片,其中绝大多数是导演专门为孩子拍摄的,大家可以在…

《划时代-51单片机C语言全新教程》-第四章 工程创建与深入 概览

(请复制整个下载地址到迅雷、快车、QQ旋风进行下载) 电子书下载地址:http://files.cnblogs.com/wenziqi/划时代-51单片机C语言全新教程.rar转载于:https://www.cnblogs.com/wenziqi/archive/2010/07/05/1771281.html

java模拟火车站买票的过程_Java常用代理

在我们通常的应用中,代理模式也是我们常用的设计模式之一。所谓的代理模式是指客户端并不直接调用实际的对象,而是通过调用代理对象,来间接的调用实际的对象。为什么要采用这种间接的形式来调用对象呢?一般是因为客户端不想访问实…

网络繁杂,我们该如何准确获取所需信息?

全世界只有3.14 % 的人关注了爆炸吧知识网络已经成为了很多人发表言论的地方不少网站亦难免存在宣泄情绪的内容网络繁杂,该如何获取准确信息?下面为你推荐一些客观公号希望能让你扩展视野,增长见识!【关注方式 】1 - 搜索公众号ID…

被评为“影响世界千年的物理学家”,杨振宁的伟大,你根本不了解

全世界只有3.14 % 的人关注了爆炸吧知识2018年3月14日,英国科学家霍金去世,作为当代英国最杰出的科学家之一,英国用最规格的方式送别了这位伟大的科学家。霍金去世了,中国媒体沸腾了!有人说:这是全人类的损…

Blazor+Dapr+K8s微服务之服务调用

1.1 Dapr环境配置1.1.1 在开发机安装Docker Desktop并启用Kubernetes安装过程略,安装好后效果如下:(左下角两个绿色指示Docker和K8s正在运行)1.1.2 在开发机安装Dapr Cli安装命令:powershell -Command …

mysql 卸载插件_MySQL 插件安装或卸载(window validate_password 为例)

查看插件:mysql> show plugins;mysql> select plugin_name,plugin_status,plugin_type,load_option,plugin_library from information_schema.plugins;默认插件目录:mysql> show variables like plugin_dir;----------------------------------…

11部高分学科纪录片,助力孩子涨姿势拓视野~

全世界只有3.14 % 的人关注了爆炸吧知识▌导读本文为同学们整理了11部高分经典学科纪录片,对应文学、数学、经济学、地理、化学、生物、物理、历史、社会学、美学、天文学11个学科。这不仅是课堂学习的补充与延伸,更是开拓视野、激发学习内驱力的绝佳利器…

Istio 首次安全评估结果公布

本文译自 Istio 社区官方博客 Announcing the results of Istio’s first security assessment[1],作者 Neeraj Poddar,译者宋净超。Istio 服务网格已在各行各业获得广泛的生产应用。该项目的成功,以及其在基础设施中执行关键安全策略的重要用…

node 16位 转24位_同时将24位和32位BMP图像顺时针旋转90度

上一次我们将24位的皮卡丘旋转了90度,但是后来改需求了。。。要求把32位的.bmp文件也能够旋转90度。上次就懵逼的我继续懵逼,只好继续转向CSDN求助。浏览了各种求助帖(还找到了数年前的信科大一学长),终于发现了32位和…

这几个关乎我们一生教养的原则,每个人都应该知道。

▲ 点击查看最近刷到这样两条微博,让人心头一暖。一条是杭州一个小男孩给医院捐款千元,还附上了一封感谢信。临走时还给医生敬了个少先队礼。另一条是扬州一名女孩把自己的小黄鸭储蓄罐整个捐到派出所,留下一张写着“武汉加油”的纸条&#x…

怎么提交 checkbox 表单_8. html form表单

“仅供学习,转载请注明出处”form表单表单用于搜集不同类型的用户输入,表单由不同类型的标签组成,相关标签及属性用法如下:1、标签 定义整体的表单区域action属性 定义表单数据提交地址method属性 定义表单提交的方式,…

越来越多的人不刷朋友圈竟然是因为.....

全世界只有3.14 % 的人关注了爆炸吧知识有些人,生活离不开朋友圈朋友圈是他们展示自我、观察世界的一扇窗户而有些人,从来也不点开朋友圈他们更愿意利用地铁上的零散化时间看点有意义、有知识的公众号推送完成对自我知识库的更新今天为大家推荐以下优质订…

Java基础---变量(三)

简单的说,我们可以把变量看作是个盒子,可以将钥匙、手机、饮料等物品存放在这个盒子中,也可以在需要的时候换成我们想存放的新物品。在 Java 中,我们通过三个元素描述变量:变量类型、变量名以及变量值。如果我们把变量…

腾讯,1000 亿!

聊聊腾讯的开源技术大家好,我是鱼皮,最近一则新闻在公司内外闹得沸沸扬扬,就是下面这个:为了履行企业发展使命,促进高质量发展的共同繁荣,腾讯在投资 500 亿元启动 “可持续社会价值创新” 战略后&#xff…

php mysql 执行sql文件_PHP执行SQL文件并将SQL文件导入到数据库_PHP

//读取文件内容$_sql file_get_contents(test.sql);$_arr explode(;, $_sql);$_mysqli new mysqli(DB_HOST,DB_USER,DB_PASS);if (mysqli_connect_errno()) {exit(连接数据库出错);}//执行sql语句foreach ($_arr as $_value) {$_mysqli->query($_value.;);}$_mysqli->…