webService訪問加密-Soapheader

WebService head加密,能夠對 WebService設置訪問用戶名和密碼,加強 WebService的安全性 使 WebService只能被受權用戶使用。 

具體實現步驟: 

一、 定義一個 soapheader派生類用來實現 WebService訪問權限驗證
[csharp]  view plain copy
 
  1. <span style="font-size:10px;">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.   
  11. /// <summary>  
  12. ///MySoapHeader 的摘要說明  
  13. /// </summary>  
  14. public class MySoapHeader:System .Web .Services .Protocols .SoapHeader   
  15. {  
  16.     private string _uname = string.Empty;//webservice訪問用戶名  
  17.   
  18.     public string Uname  
  19.     {  
  20.         get { return _uname; }  
  21.         set { _uname = value; }  
  22.     }  
  23.     private string _password = string.Empty;//webservice訪問密碼  
  24.   
  25.     public string Password  
  26.     {  
  27.         get { return _password; }  
  28.         set { _password = value; }  
  29.     }  
  30.   
  31.   
  32.     public MySoapHeader()  
  33.     {  
  34.      //  
  35.      //TODO: 在此處添加構造函數邏輯  
  36.      //  
  37.     }  
  38.     public MySoapHeader(string uname, string upass)  
  39.     {  
  40.         init(uname, upass);  
  41.     }  
  42.     private void init(string uname, string upass)  
  43.     {  
  44.         this._password = upass;  
  45.         this._uname = uname;  
  46.     }  
  47.     //驗證用戶是否有權訪問內部接口  
  48.     private bool isValid(string uname, string upass, out string msg)  
  49.     {  
  50.         msg = "";  
  51.         if (uname == "admin" && upass =="admin")  
  52.         {  
  53.             return true;  
  54.         }  
  55.         else {  
  56.             msg = "對不起!您無權調用此WebService!";  
  57.             return false;  
  58.         }  
  59.     }  
  60.     //驗證用戶是否有權訪問外部接口  
  61.     public bool isValid(out string msg)  
  62.     {  
  63.         return isValid(_uname, _password,out msg);  
  64.     }  
  65. }  
  66.   
  67.   
  68. </span>  


二、 定義有須要驗證的 WebService。 web

[csharp]  view plain copy
 
  1. <span style="font-size:10px;">using System;  
  2. using System.Collections;  
  3. using System.Linq;  
  4. using System.Web;  
  5. using System.Web.Services;  
  6. using System.Web.Services.Protocols;  
  7. using System.Xml.Linq;  
  8.   
  9. /// <summary>  
  10. ///test 的摘要說明  
  11. /// </summary>  
  12. [WebService(Namespace = "http://tempuri.org/")]  
  13. [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]  
  14. //若要容許使用 ASP.NET AJAX 從腳本中調用此 Web 服務,請取消對下行的註釋。   
  15. // [System.Web.Script.Services.ScriptService]  
  16. public class test : System.Web.Services.WebService {  
  17.   
  18.     public test () {  
  19.   
  20.         //若是使用設計的組件,請取消註釋如下行   
  21.         //InitializeComponent();   
  22.     }  
  23.     public MySoapHeader myheader = new MySoapHeader();  
  24.     [WebMethod]  
  25.     public string HelloWorld() {//普通WebService,無需驗證  
  26.         return "Hello World";  
  27.     }  
  28.     [SoapHeader("myheader")]//加入此頭部的WebService須要驗證,不加則爲普通WebService無需驗證  
  29.   
  30.     [WebMethod(Description = "根據產品編號查詢產品的價格", EnableSession = true)]  
  31.   
  32.     public string GetProductPrice2(string ProductId)  
  33.     {  
  34.   
  35.         string msg = "";  
  36.   
  37.         //驗證是否有權訪問  
  38.   
  39.         if (!myheader.isValid(out  msg))  
  40.         {  
  41.   
  42.             return -1;//返回錯誤信息  
  43.   
  44.         }  
  45.   
  46.         return ProductId;  
  47.     }  
  48.  }            
  49.    </span>  



三、 客戶端調用方法 

引用 WebService定義 WebService名稱爲 :Myservice安全

[csharp]  view plain copy
 
  1. <span style="font-size:10px;">using System;  
  2. using System.Configuration;  
  3. using System.Data;  
  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. public partial class _Default : System.Web.UI.Page   
  11. {  
  12.     protected void Page_Load(object sender, EventArgs e)  
  13.     {  
  14.         myservice.test te = new abc.test();  
  15.         myservice.MySoapHeader myhead = new MySoapHeader();  
  16.         myhead.Uname = "admin";//輸入WebService訪問用戶名  
  17.         myhead.Password = "admin";//輸入WebService訪問密碼  
  18.         te.MySoapHeaderValue = myhead;//  
  19.         string test = te.GetProductPrice2("ok!");  
  20.       Response.Write(aa);//用戶名、密碼輸入正確則輸出ok 不然輸出 錯誤msg  
  21.     }  
  22. } </span>  

 

 

也推薦另一個cookie的方式http://blog.csdn.net/dz45693/article/details/6151170cookie

相關文章
相關標籤/搜索