保护Web服务安全的另一种技术就是数字证书了。数字证书是安装在客户机上的小型软件,其作用是验证客户的身份(参见图B)。这种身份验证工作由第三方来完成,例如Verisign公司就可以采用产业标准的加密技术为每个客户创建一张唯一的证书。随后,在客户请求某种Web服务时证书也会被传递。Web服务对数字证书进行检查并依此作出反应。
图B
数字证书在使用方式上类同于IP阻塞,对整个网站来说“要不接受要不拒绝”。每一种Web服务通常都会调用专门的单一函数对随请求传递的证书进行检查。如果函数执行结果表示没有传递证书则Web服务失败并且返回一条适当的错误消息。如果证书存在,那么函数功能则照常执行。在这种情形下,数字证书同IP阻塞在服务器端的配置和维护的简易性方面倒是完全一样的,而且配置非常灵活。
数字证书相比IP阻塞具有更为显著的优点。同用户认证一样,对数字证书的安全检查直到实际调用Web方法的时候才进行。这样服务的访问者仍然可以查看Web服务的WSDL页或者有关的网页。这一优点的好处在于,有关的方法不再需要包含安全检查代码。如果你忘记在Web方法中包括这些检查代码,则该方法对任何想使用它的人都可用。
因为你必须在每个Web方法中包含认证代码,所以许多开发者趁机拓展了以上描述数字证书的简单用途。数字证书能在客户机上保存用户个人的大概的信息,因此这些代码在功能上类似于用户认证所需的代码。通常包含在数字证书中的常见信息就是用户的电子邮件地址。由于邮件地址的唯一性,所以它也可以很方便地用做数据库内的标识键。而且,因为证书既安全又唯一,所以用户无需提供口令。这样一来,用户这一方就不需要再做其他操作了,什么审核什么方法级的授权页通通不需要用户来关心了。这是提高用户友好性的一大举措。
数字证书的主要缺点就是安装比较困难。大多数用户很不情愿因为浏览某个网站就得下载并安装数字证书,因此在某些状况下(例如,B2B通讯和安全的内联网)就限制了证书的可行性。数字证书还把用户限制在了单一计算机上。即使我已经在工作用计算机上安装了一张数字证书,可我要想通过自家电脑访问Web服务却还得再安装第二张证书。最后,数字证书从来不为认证目的而从用户那里获取输入信息;认证的是某台机器而非坐在这部机器前的人。如果某人坐在我的计算机旁,Web服务会假设是我正在使用服务。
在这一系列的最后一篇文章中,我们将主义比较以上三种保护付费Web服务的安全技术,然后,再讨论下其他提供一般Web服务安全性的技术。