两种方法实现Web Service身份验证

Web Service身份验证解决方案一:通过通过SOAP Header身份验证。

1.我们实现一个用于身份验证的类,文件名MySoapHeader.cs

MySoapHeader类继承自System.Web.Services.Protocols.SoapHeader。且定义了两个成员变量,UserName和PassWord,还定义了一个用户认证的函数ValideUser。它提供了对UserName和PassWord检查的功能

  1. using System; 
  2. using System.Data; 
  3. using System.Configuration; 
  4. using System.Web; 
  5. using System.Web.Security; 
  6. using System.Web.UI; 
  7. using System.Web.UI.HtmlControls; 
  8. using System.Web.UI.WebControls; 
  9. using System.Web.UI.WebControls.WebParts; 
  10. using System.Web.Services; 
  11. using System.Web.Services.Protocols; 
  12. ///  
  13. ///MySoapHeader 的摘要说明 
  14. ///  
  15. public class MySoapHeader:SoapHeader 
  16.     public MySoapHeader() 
  17.     { 
  18.         // 
  19.         //TODO: 在此处添加构造函数逻辑 
  20.         // 
  21.     } 
  22.     public string UserName; 
  23.     public string PassWord; 
  24.     public bool ValideUser(string in_UserName, string in_PassWord)    
  25.     { 
  26.         if ((in_UserName == "zxq") && (in_PassWord == "123456")) 
  27.         { 
  28.             return true; 
  29.         } 
  30.         else 
  31.         { 
  32.             return false; 
  33.         } 
  34.     } 
  35. }

2.下面我们创建WebService.asmx    WebService.cs代码如下:

  1. using System; 
  2. using System.Collections; 
  3. using System.Web; 
  4. using System.Web.Services; 
  5. using System.Web.Services.Protocols; 
  6.  
  7. ///  
  8. ///WebService 的摘要说明 
  9. ///  
  10. [WebService(Namespace = "http://tempuri.org/")] 
  11. [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
  12. public class WebService : System.Web.Services.WebService 
  13.  
  14.     public WebService() 
  15.     { 
  16.  
  17.         //如果使用设计的组件,请取消注释以下行  
  18.         //InitializeComponent();  
  19.     } 
  20.     public MySoapHeader header; ////定义用户身份验证类变量header 
  21.     [WebMethod(Description = "用户验证测试")] 
  22.     [System.Web.Services.Protocols.SoapHeader("header")]//用户身份验证的soap头  
  23.     public string HelloWorld(string contents) 
  24.     { 
  25.         //验证是否有权访问  
  26.         if (header.ValideUser(header.UserName, header.PassWord)) 
  27.         { 
  28.             return contents + "执行了"; 
  29.         } 
  30.         else 
  31.         { 
  32.             return "您没有权限访问"; 
  33.         } 
  34.     } 

3.客户端 创建个Default.aspx

  1. Default.aspx .cs代码 
  2.  
  3. using System; 
  4. using System.Configuration; 
  5. using System.Data; 
  6. using System.Web; 
  7. using System.Web.Security; 
  8. using System.Web.UI; 
  9. using System.Web.UI.HtmlControls; 
  10. using System.Web.UI.WebControls; 
  11. using System.Web.UI.WebControls.WebParts; 
  12.  
  13. public partial class _Default : System.Web.UI.Page  
  14.     protected void Page_Load(object sender, EventArgs e) 
  15.     { 
  16.         com.cn1yw.WebService test = new com.cn1yw.WebService();//web引用(改成您自己的) 
  17.         com.cn1yw.MySoapHeader Header = new com.cn1yw.MySoapHeader();//web引用创建soap头对象(改成您自己的) 
  18.         //设置soap头变量 
  19.         Header.UserName = "zxq"; 
  20.         Header.PassWord = "123456"; 
  21.         test.MySoapHeaderValue = Header; 
  22.         //调用web 方法 
  23.         Response.Write(test.HelloWorld("Zhw")); 
  24.     } 
  25. }

Web Service身份验证解决方案二:通过集成windows身份验证。

1. 将web服务程序设为集成windows身份验证

两种方法实现Web Service身份验证

2.客户端web引用代码

  1. Test.WebReference.Service1 wr = new Test.WebReference.Service1(); //生成web service实例  
  2. wr.Credentials = new NetworkCredential("guest","123"); //guest是用户名,该用户需要有一定的权限  
  3. lblTest.Text = wr.Add(2,2).ToString(); //调用web service方法 

该方案的优点是比较安全,性能较好,缺点是不便于移植,部署工作量大。

http://www.qqread.com/other-devtool/l471675.html

posted @ 2011-03-29 15:06  芳草萋萋  阅读(160)  评论(0编辑  收藏  举报