使用soaphead方法可以在webservice的請求中增加頭部信息,當有人調用我們的webservice時,可以通過查詢這個請求的頭部信息並驗證來防止該軟件以外的程序調用webservice
一、服務端部分
using System; using System.Web.Services; using System.Web.Services.Protocols; //請注意此命名空間必須有別於代理動態連接庫上的命名空間。 //否則,將產生諸如多處定義AuthHeader這樣的錯誤。 namespace SoapHeadersCS { //由SoapHeader擴展而來的AuthHeader類 public class AuthHeaderCS : SoapHeader { public string Username; public string Password; } //[WebService(Description="用於演示SOAP頭文件用法的簡單示例")] public class HeaderService { public AuthHeaderCS sHeader; [WebMethod(Description = "此方法要求有調用方自定義設置的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 "錯誤:未能通過身份驗證"; } } private bool AuthenticateUser(string usr, string pwd) { if ((usr != null) && (pwd != null)) { return true; } return false; } } }
二、客戶端部分加上驗證的請求
WebService webservice = new WebService(); AuthHeaderCS auth = new AuthHeaderCS(); auth.Username = "vip"; auth.Password = "vippw"; webservice.AuthHeaderCSValue = auth; textBox1.Text = webservice.SecureMethod();
以上就是基於soaphead的webservice安全機制全部內容,希望能給大家一個參考,也希望大家多多支持。