天天看点

WebService基于SoapHeader实现安全认证

本文仅提供通过设置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 "对不起,您没有权限调用此服务!";  

    }  

}