业务数据目录身份验证
[MSDN]备忘
业务数据目录支持两种身份验证模型:
-
受信任的子系统
-
模拟和委派
在受信任的子系统模型中,中间层(通常是 Web 服务器)以固定标识向后端服务器进行身份验证。通常,选择此模型主要有以下几个原因:
-
提供数据库连接池。
-
降低后端服务器上的授权开销。
-
复杂性较低。
-
拥有和管理后端服务器的组向其管理的一个帐户授予访问权限。
在模拟和委派模型中,客户端将身份验证委派给中间层,中间层模拟客户端并代表客户端向后端进行身份验证。选择此模型主要有以下几个原因:
-
为了在后端服务器启用审核。
-
后端服务器上使用按用户授权的模式。
身份验证模式
使用业务数据目录连接到数据库或 Web 服务时,有以下身份验证模式可用。
传递(数据库和 Web 服务系统)
传递身份验证 指的是操作系统可以将客户端的身份验证信息传递至后端服务器。业务数据目录对数据库和 Web 服务连接都支持传递身份验证。如果使用传递身份验证,则只是以最终用户的标识进行身份验证。
从网页访问业务数据目录时,业务数据目录运行在 Microsoft Internet Information Services (IIS) 工作进程 w3wp.exe 中。此进程的标识是模拟登录用户的 IIS 应用程序池帐户。为了避免在业务数据目录向后端服务器进行身份验证时丢失登录用户的标识,必须在运行 IIS 的服务器与另一台计算机之间启用 Kerberos 委派。Kerberos 委派使接收服务器可以将身份验证请求发送到合适的位置。
将业务数据目录用于爬网时,业务数据目录运行在筛选器端口监控程序进程 mssdmn.exe 中。为了访问后端内容源,筛选器后台程序进程中的线程模拟为与后端内容源相关联的内容访问帐户。
使用传递身份验证的一个缺点是操作系统仅公开用户名和密码。因此,如果一个公司使用双因子身份验证(即,除了用户名和密码之外,用户还必须输入一些特定的私有信息),则无法使用传递身份验证。
虽然有种种缺点,但由于使用简便,传递身份验证仍然是用于测试环境中的一个不错的候选模式。如果目标服务器使用匿名身份验证或 SSL 连接,则也可以使用此模式。
RevertToSelf(数据库和 Web 服务系统)
如果用户使用 Windows 身份验证登录,则 IIS 会模拟这个特定帐户。因此 IIS 运行在应用程序池标识下的同时将模拟登录用户,而请求在被向前传递之前运行在该用户的模拟之下。
利用 RevertToSelf 身份验证,可以还原此模拟,并以为 IIS 应用程序池配置的基础帐户进行身份验证。
小心: |
---|
如果自定义代码使用 RevertToSelf() 进行身份验证,则通过向应用程序池标识授予特权,代码可以向用户授予后端服务器上的系统级特权。因此,所有自定义代码都要经过充分的测试,才能在生产系统上运行。 |
WindowsCredentials(数据库和 Web 服务系统)
Microsoft Office SharePoint Server 2007 通过从其默认的单一登录 (SSO) 服务中使用 Microsoft Windows 凭据进行身份验证。
RdbCredentials(仅用于数据库系统)
在 RdbCredentials 模式中,Office SharePoint Server 2007 通过从其默认的 SSO 服务中使用数据库凭据进行身份验证。Office SharePoint Server 2007 将数据库凭据添加到连接字符串,并将这些凭据传输到数据库服务器。
Credentials(仅用于 Web 服务系统)
Office SharePoint Server 2007 通过从其默认的 SSO 服务中使用来自 Windows 身份验证之外的凭据对 Web 服务系统进行身份验证。这些凭据用于进行基本或摘要式身份验证,具体取决于 Web 服务服务器的配置。由于基础和摘要式身份验证不足以保护凭据,因此应该使用 SSL 或 IPSec 或同时使用这两者来保护 Web 服务服务器与运行业务数据目录的服务器之间的通信。
摘要
下表总结了每种身份验证模式适用的场景,并提供了指向 SDK 中当前某些可用示例的链接。
身份验证模式 | 适用于 | 应用场景 | 示例 |
---|---|---|---|
PassThrough |
数据库和 Web 服务 |
如果位于单平台配置(数据库服务器与 SharePoint 服务器在同一个平台上)的测试环境中,或者域中启用了 Kerberos 委派,请使用此模式。如果目标服务器或 Web 服务使用匿名身份验证或 SSL 连接,则也可以使用此模式。 |
步骤 1:连接到 AdventureWorks2000 数据库 AdventureWorksDW SQL Server 2005 示例 |
RevertToSelf |
数据库和 Web 服务 |
|
|
WindowsCredentials |
数据库和 Web 服务 |
如果数据库服务器或 Web 服务使用 Windows 身份验证,请使用此模式。需要为此模式设置 SSO。 |
|
RdbCredentials |
仅用于数据库系统 |
如果数据库服务器使用数据库凭据,请使用此模式。例如,如果 SQL Server 使用 SQL Server 身份验证而非 Windows 身份验证。需要为此模式设置 SSO。 |
|
Credentials |
仅用于 Web 服务系统 |
如果 Web 服务使用 Windows 凭据之外的凭据,请使用此模式。需要为此模式设置 SSO。 |
|
身份验证模式与身份验证方案
下表说明了每种身份验证模式采用何种身份验证方案。
方案\模式 | PassThrough | RevertToSelf | Credentials、RdbCredentials、WindowsCredentials(SSO 单独应用程序) | Credentials、RdbCredentials、WindowsCredentials(SSO 组应用程序) |
---|---|---|---|---|
受信任的子系统 |
|
X |
|
X |
模拟和委派 |
X |
|
X |
|
应用程序级身份验证
作为辅助,业务数据目录还支持应用程序级身份验证。除了为系统配置的主要身份验证之外,还使用此身份验证。例如,它对于后端应用程序在调用方法时需要传递安全凭据以对用户进行授权的情况尤其有用。若要启用应用程序级身份验证,请执行以下步骤。
-
在 LobSystemInstance 的 SecondarySsoApplicationId 属性中指定包含凭据的单一登录应用程序。
-
定义 UsernameCredentialFilter 和 PasswordCredentialFilter,并将每个都与输入参数相关联。