业务连接服务(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服务器在同一台机器上)。 |
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凭据对数据源有访问权限。