ASP.NET中基于soaphead的webservice安全機(jī)制

字號(hào):


    使用soaphead方法可以在webservice的請(qǐng)求中增加頭部信息,當(dāng)有人調(diào)用我們的webservice時(shí),可以通過查詢這個(gè)請(qǐng)求的頭部信息并驗(yàn)證來防止該軟件以外的程序調(diào)用webservice
    一、服務(wù)端部分
    using System;
    using System.Web.Services;
    using System.Web.Services.Protocols;
    //請(qǐng)注意此命名空間必須有別于代理動(dòng)態(tài)連接庫上的命名空間。 
    //否則,將產(chǎn)生諸如多處定義AuthHeader這樣的錯(cuò)誤。 
    namespace SoapHeadersCS
    {
      //由SoapHeader擴(kuò)展而來的AuthHeader類 
      public class AuthHeaderCS : SoapHeader
      {
        public string Username;
        public string Password;
      }
      //[WebService(Description="用于演示SOAP頭文件用法的簡單示例")] 
      public class HeaderService
      {
        public AuthHeaderCS sHeader;
        [WebMethod(Description = "此方法要求有調(diào)用方自定義設(shè)置的soap頭文件")]
        [SoapHeader("sHeader")]
        public string SecureMethod()
        {
          if (sHeader == null)
            return "ERROR:你不是VIP用戶!";
          string usr = sHeader.Username;
          string pwd = sHeader.Password;
          if (AuthenticateUser(usr, pwd))
          {
            return "成功:" + usr + "," + pwd;
          }
          else
          {
            return "錯(cuò)誤:未能通過身份驗(yàn)證";
          }
        }
        private bool AuthenticateUser(string usr, string pwd)
        {
          if ((usr != null) && (pwd != null))
          {
            return true;
          }
          return false;
        }
      }
    }
    二、客戶端部分加上驗(yàn)證的請(qǐng)求
    WebService webservice = new WebService();
    AuthHeaderCS auth = new AuthHeaderCS();
    auth.Username = "vip";
    auth.Password = "vippw";
    webservice.AuthHeaderCSValue = auth;
    textBox1.Text = webservice.SecureMethod();
    以上就是基于soaphead的webservice安全機(jī)制全部內(nèi)容,希望能給大家一個(gè)參考