PMP ,专注于WEB功能测试、性能测试、安全测试的研究,从事全面质量管理工作。曾任多家公司测试经理、测试主管。在电子政务、银行、电商、跨境电商、直播电商领域工作多年,曾获得某龙头集团公司公测一等奖,曾任职某头部直播电商公司测试团队负责人,具有业务敏感性,擅长从0到1搭建测试团队,具有海外工作经历,以及质量管理体系搭建。邮箱:89233502@qq.com

WebService基于SoapHeader实现安全认证

上一篇 / 下一篇  2012-09-04 18:54:00 / 个人分类:安全测试

转载

     本文仅提供通过设置SoapHeader来控制非法用户对WebService的调用,如果是WebService建议使用WSE3.0来保护Web服务,如果使用的是Viaual Studio 2008可以使用WCFWCF里面提供了更多的服务认证方法。以下提供一种基于SoapHeader的自定义验证方式。

1.首先要自定义SoapHeader,须继承System.Web.Services.Protocols.SoapHeader 

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Web;

 

/// <summary>

///自定义的SoapHeader

/// </summary>

public classMySoapHeader: System.Web.Services.Protocols.SoapHeader

{

 

   private stringuserName=string.Empty;

   private stringpassWord=string.Empty;

 

   /// <summary>

    ///构造函数

   /// </summary>

   publicMySoapHeader()

    {

 

    }

 

   /// <summary>

    ///构造函数

   /// </summary>

    /// <param name="userName">用户名</param>

    /// <param name="passWord">密码</param>

   publicMySoapHeader(stringuserName,stringpassWord)

    {

       this.userName = userName;

       this.passWord = passWord;

    }

 

   /// <summary>

    ///获取或设置用户用户名

   /// </summary>

   public stringUserName

    {

       get{returnuserName; }

       set{ userName =value; }

 

    }

 

   /// <summary>

    ///获取或设置用户密码

   /// </summary>

   public stringPassWord

    {

       get{returnpassWord; }

       set{ passWord =value; }

    }

}

2.添加WebService,并编写相应代码。

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Web;

usingSystem.Web.Services;

 

/// <summary>

///WebService的摘要说明

/// </summary>

[WebService(Namespace ="http://tempuri.org/")]

[WebServiceBinding(ConformsTo =WsiProfiles.BasicProfile1_1)]

public classWebService: System.Web.Services.WebService

{

 

   //声明Soap头实例

   publicMySoapHeadermyHeader=newMySoapHeader();

 

    [System.Web.Services.Protocols.SoapHeader("myHeader")]

    [WebMethod]

   public stringHelloWord()

    {

       //可以通过存储在数据库中的用户与密码来验证

       if(myHeader.UserName.Equals("houlei")&myHeader.PassWord.Equals("houlei"))

        {

           return"调用服务成功!";

        }

       else

       {

           return"对不起,您没有权限调用此服务!";

        }

    }  

}

3.客户端调用,分别使用不设置SoapHeader与设置SoapHeader

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Linq;

usingSystem.Text;

 

namespaceApp

{

   classProgram

   {

       static voidMain(string[] args)

        {

 

            localhost.WebServiceservice =newlocalhost.WebService();

 

           //没有设置SoapHeader的服务调用

             Console.WriteLine("没有设置SoapHeader:"+ service.HelloWord());

           Console.WriteLine();

 


TAG:

 

评分:0

我来说两句

Open Toolbar