可用的身份验证模式
使用业务数据目录连接到 Web 服务时,可采用以下身份验证模式。
传递身份验证
传递身份验证 指的是操作系统可以将客户端的身份验证信息传递至后端服务器。业务数据目录对于数据库连接和 Web 服务连接均支持传递身份验证。如果使用传递身份验证,则以最终用户的标识进行身份验证。
从网页访问业务数据目录时,它将在 Microsoft Internet Information Services (IIS) 工作进程 w3wp.exe 中运行。此进程的标识为模拟登录用户的 IIS 应用程序池帐户。为了避免在业务数据目录向后端服务器进行身份验证时丢失登录用户的标识,您必须在运行 IIS 的服务器和其他计算机之间启用 Kerberos 委派。Kerberos 委派使接收服务器可以将身份验证请求发送至正确的位置。
使用业务数据目录进行爬网时,它将在筛选器端口监控程序进程 mssdmn.exe 中运行。要访问后端内容源时,此筛选器端口监控程序进程中的线程将模拟与后端内容源关联的内容访问帐户。
使用传递身份验证的一个缺点是操作系统仅公开用户名和密码。因此,如果某公司采用双因子身份验证(如果除了用户名和密码之外,用户还必须输入一些特定的私人信息),则不能使用传递身份验证。
传递身份验证使用简便,因此它在测试环境中是不错的选择。如果 Web 服务或目标服务器使用匿名身份验证或 SSL 连接,则也可以使用此模式。
RevertToSelf 身份验证
如果用户采用 Windows 身份验证登录,则 IIS 会模拟这个特定帐户。当 IIS 在应用程序池标识下运行时,它会模拟登录用户,而请求在被向前传递之前将在该用户的模拟帐户下运行。
利用 RevertToSelf 身份验证可还原此模拟,并以为 IIS 应用程序池配置的基础帐户进行身份验证。
警告
如果自定义代码使用 RevertToSelf() 进行身份验证,则通过向应用程序池标识授予特权,代码可以向用户授予后端服务器上的系统级特权。在生产系统上运行自定义代码之前,请确保全面测试该自定义代码。
Windows 凭据身份验证
Microsoft Office SharePoint Server 2007 使用来自其默认的单一登录 (SSO) 服务的 Windows 凭据进行身份验证。如果您的 Web 服务使用 Windows 身份验证,则可采用此模式。采用此模式之前需要设置 SSO。使用 Windows 凭据时,业务数据目录会尝试将从 SSO 返回的用户名字段拆分为域\用户名,然后使用域、用户名、密码这三项一起来进行身份验证。
凭据身份验证
Office SharePoint Server 2007 对 Web 服务系统进行身份验证时,使用的凭据不同于 Windows 身份验证的凭据,Windows 身份验证的凭据来自其默认的 SSO 服务。这些凭据用于进行基本身份验证或摘要式身份验证,具体取决于 Web 服务服务器的配置。由于基本身份验证和摘要式身份验证不足以保护凭据,因此应该使用 SSL 或 IPSec(或同时使用这两者)来保护 Web 服务服务器与运行业务数据目录的服务器之间的通信。
如果您的 Web 服务使用 Windows 凭据以外的其他凭据,则可使用这种模式。采用此模式之前需要设置 SSO。采用凭据模式时,业务数据目录不会像 Windows 凭据模式一样尝试将 SSO 返回的用户名字段拆分为域\用户,而是直接使用 SSO 中的用户名和密码进行身份验证。
应用程序级身份验证
业务数据目录还支持次要的应用程序级身份验证。此身份验证用作为系统配置的主要身份验证之外的辅助身份验证。对于后端应用程序需要在方法调用中传递安全凭据的情况,它特别有用。例如,用于对用户进行授权,或用于在 HTTP 头或 SOAP 标头中查找凭据的 Web 方法。若要启用应用程序级身份验证,请执行以下步骤。
在 LobSystemInstance 的 SecondarySsoApplicationId 属性中指定包含凭据的单一登录应用程序。
如果您的后端应用程序在方法调用中需要传递安全凭据,可定义一个 Username 筛选器和 Password 筛选器,并将他们分别与一个输入参数相关联。
如果您的后端应用程序需要将安全凭据作为 HTTP 头传递,可在该方法中定义 HttpUsername 属性和 HttpPassword 属性。
如果您的后端应用程序需要将安全凭据作为 SOAP 标头传递,可在该方法中定义 SOAPUsername 属性和 SOAPPassword 属性。
UserContext 筛选器
UserContext筛选器将方法返回的实例限制到当前用户的上下文。此筛选器让业务数据目录将当前 Microsoft Windows 用户的域名和用户名附加到方法调用。
如果元数据创作者创建的元数据将用户名作为用户可控制的筛选器并返回敏感的个人数据,则用户可能会看到其他用户的数据。为避免此问题,可使用 UserContext 筛选器将用户名传入至方法调用。
有关详细信息,请参阅 FilterDescriptor。
重要说明
如果您收到一条应用程序定义导入错误,提示您业务数据目录无法连接到 WSDL,请注意 WSDL 可能是非公用的。这种情况下,您需要使用本主题中讨论的某种模式来设置身份验证,或手动将 WSDL 复制到本地系统并将 WSDLFetchURL 指向文件 URL。