业务连接服务(BCS)认证概念整理

I. BDC认证模型

BDC服务支持两种认证模型:信任的子系统,模拟和代理。

在信任的子系统模型中,中间层(通常是Web服务器)通过一个固定的身份来向后端服务器取得认证。选项信任的子系统模型一般基于如下的原因:

· 拥有和管理后端服务器的组向一个它们管理的账号赋予了访问权限;
· 它提供连接池;
· 它减少了后端服务器的许可(licensing)成本;
· 它相对简单。

在模拟和代理模型中,客户端代理了中间层的认证,即中间层模拟客户端以客户端的身份取得后端服务器的认证。选择此认证模型一般基于如下原因:

· 适应后端服务器对于每用户授权的需求;
· 满足后端服务器审计需要。

II. 适用于数据库及Web服务的BDC认证模式

在通过BDC连接数据库或Web服务系统时,可选用如下模式:

1. Pass-Through Authentication (Database and Web Service Systems)

Pass-through认证是操作系统将客户端的认证信息直接传递给后端服务器。BDC对数据库和Web服务连接均支持Pass-through模式。当使用Pass-through模式时,后端认证对象即登录用户。

当BDC通过Web页面访问时,它运行在Web前端服务器的IIS工作进程w3wp.exe上。这个进程的身份是IIS应用池账号,而非模拟登录用户执行服务请求的线程。为避免在DBC向后端服务器认证时丢失了登录用户身份,你必须在运行IIS的服务与其他计算机之间启用Kerberos代理。Kerberos代理可以保证接收服务器将认证请求发送到正确的位置。

当BDC被用来爬网时,它运行在过滤器守护进程mssdmn.exe中。为访问后端的内容源,在过滤器守护进程中的线程模拟与后端内容源关联的内容访问账号。

然而,在使用pass-through认证时,操作系统仅仅暴露用户名和密码。因此,如果一个公司使用两因子(two-factor)认证(也就是说,除了用户名和密码,用户还被要求一些指定的或私有的信息),pass-through认证将不能工作。

尽管有这些不足,但由于使用的简单性,在测试环境或目标服务器使用匿名认证的情况下,pass-through都一个很好的选择。

2. RevertToSelf Authentication (Database and Web Service Systems)

如果一个用户使用Windows认证登录,IIS将模拟那个特殊的账号。因此,当IIS以应用池身份运行时,它模拟登录用户;并且,在被传递出去之前,请求(request)以用户的模拟身份运行。

RevertToSelf(停止模拟)认证使得你从模拟认证复原到IIS应用池的底层配置账号。

3. WindowsCredentials (Database and Web Service Systems)

SharePoint Server 2010通过从它的缺省安全存储服务(SSS)获得的Windows凭据进行认证。

4. RdbCredentials (Database Systems Only)

在数据库凭据模式中,SharePoint Server 2010通过从它的缺省安全存储服务(SSS)获得的数据库凭据进行认证。SharePoint服务器将数据库凭据添加到连接串中,并将此凭据传输到数据库服务器。

5. Credentials (Web Service Systems Only)

SharePoint Server 2010通过使用凭据而非从缺省安全存储服务获得的Windows凭据对Web服务系统进行认证。根据Web服务服务器的配置,这些凭据被用作基本或摘要认证。因为基本和摘要认证没有充分地保护凭据,所以你应当使用SSL,IPsec或同时使用两者在Web服务服务器和运行BDC的服务器之间实现安全通信。

6. DigestCredentials (WCF Web Service Systems Only)

在摘要凭据认证模式下,SharePoint Server 2010使用缺省安全存储服务将用户凭据映射到凭据而非Windows认证所使用的凭据。映射的凭据被用作摘要认证。因为摘要认证没有充分地保护凭据,所以你应当使用SSL,IPsec或同时使用两者在WCF Web服务服务器和运行BDC的服务器之间实现安全通信。

总结:

认证模式

适用于

使用场景

PassThrough

Databases and Web services

· 通过一个单一盒(single-box)配置用于测试环境(数据库服务器和SharePoint服务器在同一台机器上)。
· 所处的域允许Kerberos代理。
· 目的服务器或Web服务使用匿名认证或SSL连接。

RevertToSelf

Databases and Web services

需要将模拟账户复原为IIS配置的底层账号来认证。

WindowsCredentials

Databases and Web services

如果数据库服务器或Web服务使用Windows认证。你需要为这种模式设置安全存储服务。

RdbCredentials

Database systems only

如果你的数据库服务器使用数据库凭据(比如,你的SQL Server服务器使用SQL Server认证而非Windows认证)。你需要为这种模式设置安全存储服务。

Credentials

Web service systems only

如果你的Web服务使用凭据而非Windows凭据。你需要为这种模式设置安全存储服务。

DigestCredentials

WCF Web service systems only

如果你的WCF Web服务使用凭据而非用于摘要认证的Windows凭据。你需要为这种模式设置安全存储服务。

III. 各认证模式所属的认证模型

模型(Pattern/Model)

PassThrough

RevertToSelf

凭据, 摘要凭据, 数据库凭据, Windows凭据 (安全存储个人应用)

凭据, 摘要凭据, 数据库凭据, Windows凭据 (安全存储组应用)

Trusted Subsystem

 

Yes

 

Yes

Impersonation and Delegation

Yes

 

Yes

 

参考:
http://msdn.microsoft.com/en-us/library/ms566523(v=office.14).aspx

IV. 身份验证模式 (外部内容类型 > 外部系统(数据源) > 数据库属性)

1. 用户标识

官方:BDC使用请求外部数据的SharePoint用户的标识来向数据源进行认证。

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

2. BDC标识(RevertToSelf)

官方:

补充:在新建的对话框中你不会看到“RevertToSelf”的选项,须按如下方式实现。首先,执行如下PowerShell脚本打开BCS的RevertToSelf开关:

$bdc = Get-SPServiceApplication | where {$_ -match "Business Data Connectivity"}
$bdc.RevertToSelfAllowed = $true
$bdc.Update()

然后,在创建数据连接时选择 “使用用户标识进行连接”。当连接建立好后,再选择功能区中的“编辑连接属性”,修改身份验证的方式为“BDC标识”。

3. 模拟(impersonated)Windows标识(identity)

官方:BDC将调用者的标识发送给安全存储服务(SSS)。SSS提供映射到调用者标识的Windows凭据。BDC使用映射的Windows凭据向数据源进行认证。

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

4. 模拟(impersonated)自定义标识(identity)

官方:BDC将调用者的标识发送给安全存储服务(SSS)。SSS提供映射到调用者标识的一套自定义凭据(比如表单认证用户名和密码)。BDC使用映射的自定义凭据向数据源进行认证。

补充:当安全存储服务(SSS)被选择作为访问外部数据源的认证用户,并且自定义账号被用于基于表单的认证(FBA)时,需要使用“通过模拟自定义标识连接”。

参考:
http://msdn.microsoft.com/en-us/library/ff798448.aspx
http://blogs.msdn.com/b/sridhara/archive/2010/03/10/bcs-and-external-list-learning-part2.aspx
http://www.cnblogs.com/Sunmoonfire/archive/2010/06/29/1767673.html
http://lightningtools.com/bcs/creating-an-external-content-type-with-sharepoint-designer-2013/

V. BDC访问权限与安全存储服务(SSS)模拟Windows凭据权限

在外部系统的身份验证模式为“模拟Windows标识”的情况下,用户从前端(SharePoint页面)请求外部列表数据,到返回列表数据会涉及到两种权限,一种是SharePoint用于对BDC元数据对象的访问权限,一种是模拟Windows凭据对数据源的访问权限。其中,模拟Windows凭据在“管理中心 > 管理服务应用程序 > Secure Storage Service”页面进行管理,如下图:

对BDC元数据对象的访问权限在“管理中心 > 管理服务应用程序 > Business Connectivity Service”页面配置,如下图:

也就是说,要保证外部列表有权限被读取,首先要保证当前SharePoint用户被授予BDC元数据对象的访问权限;其次要保证在SSS中添加的模拟Windows凭据对数据源有访问权限。

参考:
http://blogs.msdn.com/b/sridhara/archive/2010/01/27/setting-up-bcs-with-secure-store-application-impersonation.aspx

【知识点】业务连接服务(BCS)认证概念整理的更多相关文章

  1. BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第13章节--使用业务连接服务创建业务线解决方式 SP Apps中的BCS

    BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第13章节--使用业务连接服务创建业务线解决方式  SP Apps中的BCS         之前的联系中,你安装了一个业 ...

  2. 微服务(Microservices)和服务网格(Service Mesh)架构概念整理

    注:文章内容为摘录性文字,自己阅读的一些笔记,方便日后查看. 微服务(Microservices) 在过去的 2016 年和 2017 年,微服务技术迅猛普及,和容器技术一起成为这两年中最吸引眼球的技 ...

  3. 【Spring Cloud & Alibaba 实战 | 总结篇】Spring Cloud Gateway + Spring Security OAuth2 + JWT 实现微服务统一认证授权和鉴权

    一. 前言 hi,大家好~ 好久没更文了,期间主要致力于项目的功能升级和问题修复中,经过一年时间的打磨,[有来]终于迎来v2.0版本,相较于v1.x版本主要完善了OAuth2认证授权.鉴权的逻辑,结合 ...

  4. DNS,TCP,IP,HTTP,socket,Servlet概念整理

    DNS,TCP,IP,HTTP,socket,Servlet概念整理   常见的协议虽然很容易理解,但是看了之后过一段时间不看还是容易忘,笔记如下,比较零碎,勉强供各位复习.如有错误欢迎指正.   D ...

  5. 170122、Netty 长连接服务

    推送服务 还记得一年半前,做的一个项目需要用到 Android 推送服务.和 iOS 不同,Android 生态中没有统一的推送服务.Google 虽然有 Google Cloud Messaging ...

  6. Netty 长连接服务

    转自:https://www.dozer.cc/2014/12/netty-long-connection.html 推送服务 还记得一年半前,做的一个项目需要用到 Android 推送服务.和 iO ...

  7. 阿里云:面向5G时代的物联网无线连接服务

    在4月24日落幕的2019中国联通合作伙伴大会“5G+物联网(IoT)论坛”上,阿里云高级运营专家李茁出席圆桌对话,分享了5G时代物联网如何更好地推动行业完成生产.管理和商业模式的创新,阿里云又会以何 ...

  8. 服务网格istio概念应知应会

    一.背景 最近架构组基于istio开发了服务网格(Service Mesh)平台,借此机会把相关的背景知识做一次学习和记录,方便回头查看. 初版的效果: 二.istio 官方手册:https://is ...

  9. Java面试必会-微服务权限认证

    微服务身份认证方案 1. 单点登录(SSO) 这种方案意味着每个面向用户的服务都必须与认证服务交互,这会产生大量非常琐碎的网络流量和重复的工作,当动辄数十个微应用时,这种方案的弊端会更加明显. 2. ...

随机推荐

  1. McAfee重返科技业 研制D-Central防政府监视

    新闻链接:http://tech.qq.com/a/20131008/016127.htm 新闻时间: 10月8日编译 新闻正文:McAfee重返科技业 研制D-Central防政府监视 约翰·迈克菲 ...

  2. [NOI2007 Day1] 货币兑换 Cash

    vijos P1508 / BZOJ 1492 膜拜了这么久的cdq分治,终于有机会亲自来写了.虽然这个思想很好理解,先做前一半,计算前一半对后一半的影响,再做后一半.但是由于我这个傻Ⅹ,以前既没有做 ...

  3. Oracle数据库中scott用户不存在的解决方法

    SCOTT用户是我们学习Oracle过程中一个非常重要的实验对象,在我们建立数据库的时候,如果是选择定制模式的话,SCOTT用户是不会默认出现的,不过我们可以通过使用几个简单命令来使这个用户出现.以下 ...

  4. Pig与Hive的区别

    Language 在Hive中可以执行  插入/删除 等操作,但是Pig中我没有发现有可以 插入 数据的方法,请允许我暂且认为这是最大的不同点吧. Schemas Hive中至少还有一个“表”的概念, ...

  5. Http协议访问DataSnap Rest 服务器

    用TIDHttp访问DataSnap Rest服务器,在服务器采用了用户验证的情况下,客户端需要注意下面的细节,否则不能正常连接. 假如服务器有如下的用户验证: procedure TSC.DSAut ...

  6. JavaScript原型学习笔记

    1 理解JavaScript原型 什么是原型? 原型是一个对象,其他对象可以通过它实现属性继承. 任何一个对象都可以成为原型么? 是 哪些对象有原型 所有的对象在默认的情况下都有一个原型,因为原型本身 ...

  7. HDU 1209

    http://acm.hdu.edu.cn/showproblem.php?pid=1209 水题,按五个时针分针成的锐角从小到大排序,角度相同时间从早到晚,输出中间的那个 时针一小时走30度,一分钟 ...

  8. iOS类实现里面怎么用属性

    属性(properity)是一个很好用的东西,简单而直接.Objective-C还创建了一个点语法来帮助大家使用.根据以前C++的习惯,类外访问实例变量时,最好通过getter/setter方法,也就 ...

  9. java 代码的细节优化

    前言 代码优化,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑 的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用 ...

  10. Linux 2>&1理解(转)

    2>&1使用一 相关知识1)默认地,标准的输入为键盘,但是也可以来自文件或管道(pipe |).2)默认地,标准的输出为终端(terminal),但是也可以重定向到文件,管道或后引号(b ...