文档介绍:1 构建安全的 应用程序身份验证、授权和安全通信有关构建安全的 应用程序的起点和完整概述, 请参见登陆页面。总结 Web 服务将客户端证书身份验证作为客户端应用程序身份验证的一种方式。本“如何做”介绍如何为客户端证书身份验证配置 Web 服务,以及如何调用 Web 服务以传递来自 Web 应用程序的证书。如何做:使用来自 的客户端证书来调用 Web 服务为了执行授权, Web 服务经常需要能够对它们的调用方( 其它应用程序) 进行身份验证。客户端证书为 Web 服务提供了一种非常好的身份验证机制。如果您使用客户端证书, 您的应用程序也会得益于客户端应用程序和 Web 服务之间的安全通道创建( 使用安全套接字层[SSL] ) 。这样您就可以安全地在 Web 服务之间传送保密信息。 SSL 确保消息的完整性和机密性。本“如何做”介绍如何调用配置为要求客户端证书的 Web 服务。注意:本“如何做”中的信息还适用于 和 IIS 托管的远程组件。为什么使用服务组件? 本“如何做”中介绍的解决方案使用被配置为在企业服务服务器应用程序中运行的服务组件(使用自定义的服务帐户)。 Web 应用程序调用该服务组件,而服务组件将调用 Web 服务(传递客户端证书)。图 1 中显示了这一解决方案配置。 2 { Insert figure: How To - Calling A Web Service with } 图1 调用服务组件以调用 Web 服务这种配置是为了确保系统在与 Web 服务通讯时能够访问用户配置文件。这是初始 SSL 握手所必需的。注意: 用于运行 Web 应用程序的 帐户具有“拒绝交互登录”权限, 它禁止用户使用此帐户进行交互登录。因此,该帐户没有用户配置文件。不要给 帐户(或任何用于运行 Web 应用程序的帐户)授予交互登录的权限。在配置运行 Web 应用程序的帐户时始终要遵循最少权限原则, 并且给它们授予尽可能少的权限。有关的详细信息, 请参见本指南“参考”部分中的“如何做: 创建自定义帐户以便运行 ”。为什么需要用户配置文件? 在请求要求客户端证书的 Web 服务时, 在客户端和服务器之间就会进行 SSL 握手。交换的一些组件有服务器证书、客户端证书以及客户端生成的“预备主要机密”。以后可在协议中使用此机密来生成“主要机密”。为使服务器确认证书提供者就是实际的私钥持有者,客户端必须使用私钥加密预备主要机密, 并将加密的预备主要机密发送到服务器。为使系统能够访问客户端的私钥以签名预备主要机密, 它必须访问客户端密钥存储中的私钥。密钥存储位于客户端的配置文件( 必须加载) 中。需求以下各项介绍了推荐的硬件、软件、网络基础结构、技巧和知识以及您需要的服务包。● Microsoft ? Windows ? 2000 操作系统● Microsoft Visual Studio ? .NET 开发系统 3 ●访问证书颁发机构(CA) 以生成新的证书●一个已安装了服务器证书的 Web 服务器有关安装 Web 服务器证书的详细信息,请参见“如何做:在 Web 服务器上设置 SSL ”。“如何做”中的过程还要求您具备 Microsoft Visual C# ?开发工具的相关知识。总结“如何做”包括如下过程: 1. 创建一个简单的 Web 服务 Web 服务虚拟目录配置为需要有客户端证书 3. 创建一个自定义帐户以运行服务组件 4. 为自定义帐户请求一个客户端证书 5. 使用浏览器测试客户端证书 6. 将客户端证书导出到一个文件中 7. 开发用于调用该 Web 服务的服务组件 8. 配置和安装该服务组件 9. 开发一个 Web 应用程序以调用该服务组件注意: 在本“如何做”主题中,将 Web 服务计算机( 它托管 Web 服务) 命名为“ WSServer ”; 而将 Web 服务客户端计算机( 它托管客户端 Web 应用程序和服务组件) 命名为“ WSClient ”。 1. 创建一个简单的 Web 服务 u在 Web 服务主机上创建一个简单的 Web 服务 1. 启动 Visual Studio .NET , 创建一个新的名为 SecureMath 的 C# Web 服务应用程序。 重命名为 。 3. 打开 , 并将 Service1 类重命名为 math 。 4. 将下面的 Web 方法添加到 math 类。[WebMethod] public long Add(long operand1, long operand2) { return (operand1 + operand2); } “构建”菜单上,单击