使用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安全機制全部內容,希望能給大家一個參考,也希望大家多多支援雲棲社區。