Web Service身份验证解决方案一:通过通过SOAP Header身份验证。
1.我们实现一个用于身份验证的类,文件名MySoapHeader.cs
MySoapHeader类继承自System.Web.Services.Protocols.SoapHeader。且定义了两个成员变量,UserName和PassWord,还定义了一个用户认证的函数ValideUser。它提供了对UserName和PassWord检查的功能
- using System;  
 - using System.Data;  
 - using System.Configuration;  
 - using System.Web;  
 - using System.Web.Security;  
 - using System.Web.UI;  
 - using System.Web.UI.HtmlControls;  
 - using System.Web.UI.WebControls;  
 - using System.Web.UI.WebControls.WebParts;  
 - using System.Web.Services;  
 - using System.Web.Services.Protocols;  
 - ///   
 - ///MySoapHeader 的摘要说明  
 - ///   
 - public class MySoapHeader:SoapHeader  
 - {  
 -  public MySoapHeader()  
 -  {  
 -  //  
 -  //TODO: 在此处添加构造函数逻辑  
 -  //  
 -  }  
 -  public string UserName;  
 -  public string PassWord;  
 -  public bool ValideUser(string in_UserName, string in_PassWord)   
 -  {  
 -  if ((in_UserName == "zxq") && (in_PassWord == "123456"))  
 -  {  
 -  return true;  
 -  }  
 -  else  
 -  {  
 -  return false;  
 -  }  
 -  }  
 - } 
 
;
2.下面我们创建WebService.asmx    WebService.cs代码如下:
- using System;  
 - using System.Collections;  
 - using System.Web;  
 - using System.Web.Services;  
 - using System.Web.Services.Protocols;  
 - ///   
 - ///WebService 的摘要说明  
 - ///   
 - [WebService(Namespace = "http://tempuri.org/")]  
 - [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]  
 - public class WebService : System.Web.Services.WebService  
 - {  
 -  
 -  public WebService()  
 -  {  
 -  
 -  //如果使用设计的组件,请取消注释以下行   
 -  //InitializeComponent();   
 -  }  
 -  public MySoapHeader header; ////定义用户身份验证类变量header  
 -  [WebMethod(Description = "用户验证测试")]  
 -  [System.Web.Services.Protocols.SoapHeader("header")]//用户身份验证的soap头   
 -  public string HelloWorld(string contents)  
 -  {  
 -  //验证是否有权访问   
 -  if (header.ValideUser(header.UserName, header.PassWord))  
 -  {  
 -  return contents + "执行了";  
 -  }  
 -  else  
 -  {  
 -  return "您没有权限访问";  
 -  }  
 -  }  
 - }  
 
;
3.客户端 创建个Default.aspx
- Default.aspx .cs代码  
 - using System;  
 - using System.Configuration;  
 - using System.Data;  
 - using System.Web;  
 - using System.Web.Security;  
 - using System.Web.UI;  
 - using System.Web.UI.HtmlControls;  
 - using System.Web.UI.WebControls;  
 - using System.Web.UI.WebControls.WebParts;  
 - public partial class _Default : System.Web.UI.Page   
 - {  
 -  protected void Page_Load(object sender, EventArgs e)  
 -  {  
 -  com.cn1yw.WebService test = new com.cn1yw.WebService();//web引用(改成您自己的)  
 -  com.cn1yw.MySoapHeader Header = new com.cn1yw.MySoapHeader();//web引用创建soap头对象(改成您自己的)  
 -  //设置soap头变量  
 -  Header.UserName = "zxq";  
 -  Header.PassWord = "123456";  
 -  test.MySoapHeaderValue = Header;  
 -  //调用web 方法  
 -  Response.Write(test.HelloWorld("我是强"));  
 -  }  
 - } 
 
;
Web Service身份验证解决方案二:通过集成windows身份验证。
1. 将web服务程序设为集成windows身份验证

2.客户端web引用代码
- Test.WebReference.Service1 wr = new Test.WebReference.Service1(); //生成web service实例   
 - wr.Credentials = new NetworkCredential("guest","123"); //guest是用户名,该用户需要有一定的权限   
 - lblTest.Text = wr.Add(2,2).ToString(); //调用web service方法  
 
;
该方案的优点是比较安全,性能较好,缺点是不便于移植,部署工作量大。