本文仅提供通过设置soapheader来控制非法用户对webservice的调用,如果是webservice建议使用wse3.0来保护web服务,如果使用的是viaual studio 2008可以使用wcf,wcf里面提供了更多的服务认证方法。以下提供一种基于soapheader的自定义验证方式。
1.首先要自定义soapheader,须继承system.web.services.protocols.soapheader。
2.添加webservice,并编写相应代码。
3.客户端调用,分别使用不设置soapheader与设置soapheader。
添加自定义soapheader可以成功调用webservice,否则不能调用webservice,从而实现对web service的非法调用。这种方法存在一定的弊端,就是在每一个webservice方法上都要进行一下验证,如果用户名与密码存储在数据库中,每调用一次webservice都要访问一次数据库进行用户名与密码的验证,对于频繁调用webservice来说,数据库压力很大。然而少量webservice调用这种方式还是一种不错的选择。
using system;
using system.collections.generic;
using system.web;
using system.web.services;
/// <summary>
///webservice 的摘要说明
/// </summary>
[webservice(namespace = "http://tempuri.org/")]
[webservicebinding(conformsto = wsiprofiles.basicprofile1_1)]
public class webservice : system.web.services.webservice
{
//声明soap头实例
public mysoapheader myheader = new mysoapheader();
[system.web.services.protocols.soapheader("myheader")]
[webmethod]
public string helloword()
{
//可以通过存储在数据库中的用户与密码来验证
if (myheader.username.equals("houlei") & myheader.password.equals("houlei"))
{
return "调用服务成功!";
}
else
return "对不起,您没有权限调用此服务!";
}
}