到目前为止安全性是开发和部署Web service的最基本的内容之一。有很多的论文、文档以及示例说明怎样保护Web service,但是这些信息中的绝大多数所涉及到的都是些有关理论和实践的高级、抽象的定义,很少人提及其具体实现。
在这个三部系列的第一部分,我们将通过一个使用定制的SOAP HEADER的例子来讨论一些有关具体编程的Web service安全性。示例Web service将使用cookie去获取用户的安全环境(context),从而在方法间维护状态,Web service消费者将使用一个Windows应用程序来实现。
典型的Web service一般是作为一个ASP.NET应用的附加功能或者API而存在的。Web service既可以直接地与数据库交互,也可以在一个N层解决方案中通过调用中间件来完成其功能。在应用程序中Web service需要知道是谁调用了它以及那个用户具有什么样的特权。
多数情况下,用户、角色、商业规则以及授权是已经实现了的,你只要简单地提取这些信息。Web service需要实现一个模式以确定请求客户的信任凭证。理论上在Web service中可以传递用户ID和密码给每个方法,但是一个更面向对象的方法是创建一个继承System.Web.Services.Protocols.SoapHeader的类。这个类将成为我们的SOAP Header,它将被传递到Web service,其中包含我们用来验证用户的所有信息。