【知识点】业务连接服务(BCS)认证概念整理

时间:2023-12-11 08:05:13

业务连接服务(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”页面进行管理,如下图:

【知识点】业务连接服务(BCS)认证概念整理

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

【知识点】业务连接服务(BCS)认证概念整理

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

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