通過SOAPHeader增強WebService的安全性


  閱讀目錄

  一:前言

  二:SOAPHeader實現身份驗證步驟

  三:通過SOAPHeader實現身份驗證步驟實例

  一:前言
  在互聯網上,調用WebService往往需要進行身份驗證,我們的WebService不可以讓任何人都能夠調用的,一般能調用我們的WebService的不是我們的客戶,就是我們的合作方,調用WebService時我們需要身份驗證,只有通過身份驗證的用戶才能調用相應的WebService資源,我們可以通過SOAPHeader自定義的身份驗證方式實現驗證

  二:SOAPHeader實現身份驗證步驟

  1:自定義一個類比如CustomSOAPHeader,該類繼承自SOAPHeader

  2:在CustomSOAPHeader類里面寫我們自定義驗證的邏輯

  3:在WebService中聲明CustomSOAPHeader類型的公共成員header,並在暴露給客戶端調用的方法中調用header的自定義驗證方法實現身份驗證功能

  4:在客戶端首先創建CustomSOAPHeader類型的實例對象header,然后將用戶名和密碼傳入header,最后調用WebService實例對象的CustomSOAPHeaderValue屬性將header傳入WebService

  三:通過SOAPHeader實現身份驗證步驟實例

  1:Service.cs

   public class CustomSOAPHeader : SoapHeader
  {
      public CustomSOAPHeader()
      {
          //
          //TODO: 在此處添加構造函數邏輯
          //
      }
      public string name;
      public string password;
      public bool IsValid(string strUserName, string strPassword)
      {
          if (strUserName == "三星電子" && strPassword == "abc")
              return true;
          else
              return false;
      }
  }

  public class Service : System.Web.Services.WebService
  {
      public Service ()

    {

          //如果使用設計的組件,請取消注釋以下行 
          //InitializeComponent(); 
      }
      public CustomSOAPHeader header;
      [WebMethod]
      [SoapHeader("header")]
      public string HelloWorld() 
      {
          if (header.IsValid(header.name, header.password))
              return "SOAP標頭驗證成功,返回HelloWorld";
          return "SOAP標頭驗證失敗";
      }
  }

  2:Program.cs

   static void Main(string[] args)
        {
            localhost.Service service = new localhost.Service();
            localhost.CustomSOAPHeader header = new localhost.CustomSOAPHeader();
            header.name = "三星電子";
            header.password = "abc";
            service.CustomSOAPHeaderValue = header;
            Console.WriteLine(service.HelloWorld());
            Console.ReadLine();
        }

  

 

 


免責聲明!

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



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