Business Data Connectivity Service 身份验证

上次修改时间: 2015年3月9日

适用范围: SharePoint Server 2010

本文内容
身份验证模式
身份验证模式与身份验证方案
应用程序级身份验证

Business Data Connectivity (BDC) Service 支持两种身份验证模型:

  • 受信任的子系统

  • 模拟和委派

在受信任的子系统模型中,中间层(通常是 Web 服务器)以固定标识向后端服务器进行身份验证。选择受信任的子系统模型主要有以下几个原因:

  • 拥有和管理后端服务器的组向其管理的一个帐户授予访问权限。

  • 此模型提供连接池。

  • 此模型可降低后端服务器上的授权开销。

  • 此模型复杂性较低。

在模拟和委派模型中,客户端将身份验证委派给中间层,中间层模拟客户端并代表客户端向后端进行身份验证。使用此模型主要有以下几个原因:

  • 为了使后端服务器满足按用户授权的要求

  • 为了在后端服务器启用审核

身份验证模式

使用 BDC 连接到数据库或 Web 服务时,有以下身份验证模式可用。

备注

若要确定适用于每种模式的身份验证方案,请参阅身份验证模式与身份验证方案 。

传递身份验证(数据库和 Web 服务系统)

传递身份验证 指的是操作系统可以将客户端的身份验证信息传递至后端服务器。BDC 对数据库和 Web 服务连接都支持传递身份验证。如果使用传递身份验证,将以登录用户的标识进行身份验证。

从网页访问 BDC 时,它运行在 Web 前端服务器上的 Internet Information Services (IIS) 工作进程 w3wp.exe 中。此进程的标识是 IIS 应用程序池帐户,但用于为请求提供服务的线程会模拟登录用户。为了避免在 BDC 向后端服务器进行身份验证时丢失登录用户的标识,必须在运行 IIS 的服务器与另一台计算机之间启用 Kerberos 委派。Kerberos 委派使接收服务器可以将身份验证请求发送到合适的位置。

将 BDC 用于爬网时,它运行在筛选器端口监控程序进程 mssdmn.exe 中。为了访问后端内容源,筛选器端口监控程序进程中的线程模拟为与后端内容源相关联的内容访问帐户。

但是,在使用传递身份验证时,操作系统仅公开用户名和密码。因此,如果一个公司使用双因子身份验证(即,除了用户名和密码之外,用户还必须输入一些特定的或私有信息),则无法使用传递身份验证。

虽然有种种缺点,但由于使用简便,传递身份验证仍然是用于测试环境中的一个不错的候选模式。如果目标服务器使用匿名身份验证,则也可以使用此模式。

RevertToSelf 身份验证(数据库和 Web 服务系统)

如果用户采用 Windows 身份验证登录,则 IIS 会模拟这个特定帐户。当 IIS 在应用程序池标识下运行时,它会模拟登录用户,而请求在被正向传递之前将在该用户的模拟帐户下运行。

利用 RevertToSelf 身份验证可还原此模拟,并以为 IIS 应用程序池配置的基础帐户进行身份验证。

警告注释警告

如果自定义代码使用 RevertToSelf 方法进行身份验证,则通过向应用程序池标识授予特权,代码可以向用户授予后端服务器上的系统级特权。因此,所有自定义代码都要经过充分的测试,才能在生产系统上运行。

WindowsCredentials(数据库和 Web 服务系统)

Microsoft SharePoint Server 2010 通过使用从其默认的 Secure Store Service 中获取的 Windows 凭据进行身份验证。

RdbCredentials(仅用于数据库系统)

在 RdbCredentials 模式中,SharePoint Server 2010 通过从其默认的 Secure Store Service 中使用数据库凭据进行身份验证。SharePoint Server 将数据库凭据添加到连接字符串,并将这些凭据传输到数据库服务器。

Credentials(仅用于 Web 服务系统)

SharePoint Server 2010 通过从其默认的 Secure Store Service 中使用来自 Windows 身份验证之外的凭据对 Web 服务系统进行身份验证。这些凭据用于进行基本或摘要式身份验证,具体取决于 Web 服务服务器的配置。由于基础和摘要式身份验证不足以保护凭据,因此应该使用安全套接字层 (SSL) 或 Internet 协议安全性 (IPSec) 或同时使用这两者来保护 Web 服务服务器与运行 BDC 的服务器之间的通信。

DigestCredentials(仅用于 WCF Web 服务系统)

在 DigestCredentials 身份验证模式下,SharePoint Server 2010 使用默认的 Secure Store Service 将用户的凭据映射到用于 Windows 身份验证的凭据之外的凭据。映射的凭据用于摘要式身份验证。由于摘要式身份验证不足以保护凭据,因此应该使用安全套接字层 (SSL) 或 Internet 协议安全性 (IPSec) 或同时使用这两者来保护 WCF Web 服务服务器与运行 BDC 的服务器之间的通信。

摘要

表 1 总结了每种身份验证模式适用的场景,并提供了指向 SharePoint 2010 SDK 中当前某些可用示例的链接

身份验证模式

适用范围

使用场景

PassThrough

数据库和 Web 服务

如果位于"单服务器"配置(数据库服务器与运行 SharePoint Server 的服务器位于同一台计算机上)的测试环境中,或者域中启用了 Kerberos 委派,请使用此模式。如果目标服务器或 Web 服务使用匿名身份验证或 SSL 连接,则也可以使用此模式。

RevertToSelf

数据库和 Web 服务

如果需要还原模拟,并以为 IIS 应用程序池配置的基础帐户进行身份验证,则可以使用此模式。

WindowsCredentials

数据库和 Web 服务

如果数据库服务器或 Web 服务使用 Windows 身份验证,请使用此模式。需要为此模式设置 Secure Store Service。

RdbCredentials

仅用于数据库系统

如果数据库服务器使用数据库凭据,请使用此模式;例如,如果运行 SQL Server 的服务器使用 SQL Server 身份验证而非 Windows 身份验证。需要为此模式设置 Secure Store Service。

Credentials

仅用于 Web 服务系统

如果 Web 服务使用 Windows 凭据之外的凭据,请使用此模式。需要为此模式设置 Secure Store Service。

DigestCredentials

仅用于 WCF Web 服务系统

如果 WCF Web 服务对摘要式身份验证使用 Windows 凭据之外的凭据,请使用此模式。必须为此模式设置 Secure Store Service。

身份验证模式与身份验证方案

下表说明了每种身份验证模式采用何种身份验证方案。

方案/模式

PassThrough

RevertToSelf

Credentials、DigestCredentials、RdbCredentials、WindowsCredentials(安全存储单独应用程序)

Credentials、DigestCredentials、RdbCredentials、WindowsCredentials(安全存储组应用程序)

受信任的子系统

模拟和委派

应用程序级身份验证

除了为系统配置的主要身份验证之外,BDC 还支持辅助、应用程序级身份验证。它对于后端应用程序在调用方法时需要传递安全凭据以对用户进行授权的情况尤其有用。

通过在 BDC 模型中定义筛选器(名为"用户名"、"密码"、"SSOTicket"和"UserContext"),可以启用应用程序级身份验证。有关这些筛选器的详细信息,请参阅 Business Data Connectivity Service 支持的筛选器的类型

下面演示如何通过向 BDC 模型中添加用户名和密码筛选器来启用应用程序级身份验证。

启用应用程序级别身份验证

  1. 在 LobSystemInstance 的 SecondarySsoApplicationId 属性中指定包含凭据的单一登录应用程序。

  2. 定义 UsernameCredentialFilter 和 PasswordCredentialFilter,并将每个都与输入参数相关联。