WEBSERVICES 身份验证。

使用SoapHeader实现WebServices自定义身份验证
本文介绍了一种使用SoapHeader方法在WebServices中实现自定义身份验证的简便方式,包括验证类定义、配置验证方法及客户端调用等步骤。

在调用Web Serivices时,往往需要身份验证,使得通过验证的用户才能调用你Web Serivices中的方法.当然你可以通过将参数添加到每个需要自定义身份验证方案的Web services方法中去,这需要花费很大的精力.

本文参看了IssueVision

使用了非常常用而且有效便捷的方法-----使用SoapHeader来实现自定义身份验证数据的传递.

主要步骤:

 

1首先定义自己的验证类:包括用户名和密码:

using System.Text;
using System.Web.Services.Protocols;

namespace Model
{
    public   class MySoapHeader: SoapHeader
    {
        public  string  UserName
        { get;
          set;
        }
        public  string  PassWord
        {
            get;
            set;
        }

      
    }
}

2:在自己的WEBSERVICES中写入该类:

如:

  [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
    // [System.Web.Script.Services.ScriptService]
    public class WebService1 : System.Web.Services.WebService
    {

        public Model.MySoapHeader MyHeader;

}

3:添加验证方法:

在服务器端APP.CONFIG中配置

如下:

 <add key ="UserName" value="123"/>
   <add key="PassWord" value ="123"/>

自己添加一个验证方法

  public static void VerifySoapHeader(Model.MySoapHeader MyHeader)
        {
            string name = System.Configuration.ConfigurationManager.AppSettings["UserName"].ToString();
            string pass = System.Configuration.ConfigurationManager.AppSettings["PassWord"].ToString();
            if (MyHeader != null && MyHeader.PassWord != null && MyHeader.UserName != null)
            {
                if (name == MyHeader.UserName && pass == MyHeader.PassWord)
                {
                   
                }
                else
                {
                    throw new Exception("验证信息错误");
                }
            }
            else
            {
                throw new Exception("验证信息错误");
            }


        }

4:在WEBSERVICES中添加SOAP头和验证方法:

      [WebMethod]
        [SoapHeader("MyHeader")]   //用于验证soap头
        public DataTable Select()
        {
            SoapHeaderVerify.VerifySoapHeader(this.MyHeader);   //验证
            return BLL.BTest.Select();

           
        }

 

 

5在客户端添加如下代码:

a在app.config中

添加:

<appSettings>
    <add key="UserName"  value="123"/>
    <add key="PassWord" value="123" />
  </appSettings>

其次:在窗口中添加

       localhost.WebService1SoapClient client;
        localhost.MySoapHeader MyHeader;

           client = new localhost.WebService1SoapClient();
                MyHeader = new localhost.MySoapHeader();
                MyHeader.UserName = System.Configuration.ConfigurationManager.AppSettings["UserName"].ToString();
                MyHeader.PassWord = System.Configuration.ConfigurationManager.AppSettings["PassWord"].ToString();

 

然后在调用WEBSERVICES的方法的时候把soap头加上就行了:

如:

client.Select(MyHeader);

 

其它的参考资料:

http://www.cnblogs.com/chhuic/archive/2009/09/28/1576050.html

http://space.itpub.net/?uid-12639172-action-viewspace-itemid-157121

http://developer.51cto.com/art/200908/141829.htm

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值