C#中Web Service身份驗證


最近遇到一個問題,暴露在網絡上的Web Service如何做身份驗證,而不被其他人說是用, 花了一天的時間去看書,了解到三種方法,再下面記錄其中兩種,另一種是Form驗證,個人並不能完全了解清楚,所以也不在這誤人子弟了,閑話不說,開始:

  第一種方案:通過 SOAP Header

  首先需要我們自己去實現一個有身份驗證信息的類,這個類繼承System.Web.Services.Protocols.SoapHeader,而且定義兩個成員變量,一個為UserName,一個為PassWord.

  public class MySoapHeader:SoapHeader

  {

  public string UserName

  {

  get;

  set;

  }

  public string PassWord;

  {

  get;

  set;

  }

  }

  也可以在此類中加入驗證方法,當然需要看您項目的具體規划

  接下來是Web Service的寫法

  代碼

  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 userName = header.UserName;

  string passWord = header.PassWord;

  return "Hello World";

  //加入驗證權限的方法,如果之前的SOAPHeader中已經有方法這里可以直接調用

  }

  }

  客戶端調用時的代碼比較簡單:

  代碼

  com.WebService test = new com.WebService();//你的web Service

  MySoapHeader Header = new MySoapHeader();//web引用創建soap頭對象

  //設置soap頭變量

  Header.UserName = "Zane";

  Header.PassWord = "Yao";

  test.MySoapHeaderValue = Header;

  //調用web 方法

  Response.Write(test.HelloWorld());

  這樣就完成了~

  第二個方案: 將web服務程序設為集成windows身份驗證,當然需要將匿名訪問關閉,

  客戶端web引用代碼

  Test.WebReference.Service wr = new Test.WebReference.Service(); //生成web service實例

  wr.Credentials = new NetworkCredential("用戶名","密碼");

  Response.Write(wr.HelloWorld()); //調用web service方法


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM