摘要:目前,基于 HTTP 的安全机制是保证您的 Web 服务安全的最好方法。了解如何结合使用 Microsoft IIS 与 Microsoft ASP.NET 来保证 Web 服务的安全。
注意:本文假设您已经比较熟悉如何配合使用 SSL 和 IIS。
简介
有一个一直让 Web 服务开发人员感到头疼的课题,那就是:如何使 IIS 和 ASP.NET Web 服务协同工作以提供安全性。现在,我们通过 IIS 来处理安全问题,并通过 ASP.NET 进行调节。ASP.NET 可以接受 IIS 提供的身份标识信息并使用该信息来了解调用者是谁,或者利用代码访问安全性在 Web 服务上执行特定操作。对于许多人而言,最大的问题是如何使 .NET 应用程序利用内置的 IIS 安全保护功能。在不远的将来,WS-Security 将是您的更佳选择。在那一天到来之前,HTTP 级的安全保护将是我们许多人用来保证信息安全的方法。
当以安全的方式执行 Web 方法时,必须涉及以下各项:
- 保密使侦听对话的实体不能直接看到数据。
- 完整性向接收者提供对 SOAP 消息所作更改进行检测的能力。
- 身份验证回答“调用者是谁”的问题。
- 授权回答“调用者是否有权访问该 Web 方法”的问题。
- 认可证明所发生的操作,以防止客户端在事务处理中欺诈或否认。
这些安全保护功能常常是配合使用的。身份验证允许授权和认可的发生。SSL 提供的保密措施也包括完整性和身份验证机制。本文假设您已经比较熟悉如何配合使用 SSL 和 IIS。如果您不熟悉,请查看本文末尾的资源。同时,建议您查找安装了证书服务器的 Microsoft® Windows® 服务器,或者在可用的 Windows 服务器上安装证书服务器。这将对理解本文有关 SSL 的部分有所帮助。
使用 SSL 进行加密和签名
任何时候当您需要对基于 HTTP 的 SOAP 消息进行保密时,都应该通过 SSL 运行服务。它将对通过线路查看数据传输的实体隐藏 Web 服务中的数据。
为了使用本节中的数据,在您的 Web 服务器的根目录下必须安装有 X.509 证书。。正确安装证书后,您便可以为虚拟目录或特定文件选择强制执行 SSL 身份验证。
打开 Internet Information Services 管理控制台的步骤
- 在“开始”菜单中单击“运行”。
- 在“打开”编辑框中,键入 inetmgr。
- 单击“确定”。
这样,IIS 管理控制台就打开了。
为虚拟目录或特定文件请求 SSL 就是在 IIS 中选择正确的选项。要选择“正确的选项”,请浏览到 IIS 管理控制台中的虚拟目录。如果您想为可以通过给定的虚拟目录进行访问的所有 Web 服务请求 SSL,请右键单击该虚拟目录,单击“属性”,然后单击“目录安全性”选项卡。
如果只保护某个特定的 Web 服务,请右键单击与该 Web 服务关联的 .asmx 文件,单击“属性”,然后单击“文件安全性”选项卡。不管执行哪个步骤,您都将看到一个与图 1 类似的对话框。请在“安全通信”下,单击“编辑”,将打开如图 2 所示的“安全通信”对话框。

图 1:IIS 管理控制台中的“安全性”选项卡

图 2:“安全通信”对话框
默认情况下“需要安全通道 (SSL)”复选框没有被选中,请选中该复选框以请求 SSL。SSL 支持 40 位和 128 位加密。加密使用的位数越多,破译和找出原始位就越困难。这就是为特定的 .asmx 文件或整个 Web 服务启用 SSL 所要做的全部工作。这样,只要 Web 服务器的证书不受威胁,所有 Web 服务客户端和 Web 服务本身都将是安全的。SSL 使用包含公钥的 X.509 证书,可能还包含一个私钥。如果私钥被外部用户知道,则使用公钥加密的通信就可能会被外部用户侦测到,从而变得不安全。
一旦您将资源设置为通信时需要 SSL,则发送者和接收者之间传送的信息就将被加密并签名。也就是说,外部用户将无法阅读消息的内容。如果外部用户改变了消息的字节数,消息接收者可以检测到更改。