webservice 传输加密
发布时间:2020-12-16 23:37:08 所属栏目:安全 来源:网络整理
导读:namespace TestWebService{ public class MySoapHeader11:System.Web.Services.Protocols.SoapHeader { private string _UserID = string.Empty; private string _PassWord = string.Empty; //summary ? //构造函数 ? ///summary ? public MySoapHeader11()
namespace TestWebService { public class MySoapHeader11:System.Web.Services.Protocols.SoapHeader { private string _UserID = string.Empty; private string _PassWord = string.Empty; //<summary> ? //构造函数 ? //</summary> ? public MySoapHeader11() { } //<summary> ? //构造函数 ? //</summary> ? //<param?name="nUserID">用户ID</param> ? //<param?name="nPassWord">加密后的密码</param> ? public MySoapHeader11(string nUserID,string nPassWord) { Initial(nUserID,nPassWord); } #region?属性 //<summary> ? //用户名 ? //</summary> ? public string UserID { get { return _UserID; } set { _UserID = value; } } //<summary> ? //加密后的密码 ? //</summary> ? public string PassWord { get { return _PassWord; } set { _PassWord = value; } } #endregion #region?方法 //<summary> ? //初始化 ? //</summary> ? //<param?name="nUserID">用户ID</param> ? //<param?name="nPassWord">加密后的密码</param> ? private void Initial(string nUserID,string nPassWord) { UserID = nUserID; PassWord = nPassWord; } //<summary> ? //验证用户名密码是否正确 ? //</summary> ? //<param?name="nUserID">用户ID</param> ? //<param?name="nPassWord">加密后的密码</param> ? //<param?name="nMsg">返回的错误信息</param> ? //<returns>用户名密码是否正确</returns> ? private bool IsValid(string nUserID,string nPassWord,out?string nMsg) { nMsg = ""; try { //判断用户名密码是否正确? ? if (nUserID == "admin" && nPassWord == "admin") { return true; } else { nMsg = "对不起,你无权调用此Web服务。"; return false; } } catch { nMsg = "对不起,你无权调用此Web服务。"; return false; } } //<summary> ? //验证用户名密码是否正确 ? //</summary> ? //<returns>用户名密码是否正确</returns> ? public bool IsValid(out?string nMsg) { return IsValid(_UserID,_PassWord,out?nMsg); } #endregion } } namespace TestWebService { /// <summary> /// MyWebServiceTwo 的摘要说明 /// </summary> [WebService(Namespace = "myWebService.liang2")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)] // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。 // [System.Web.Script.Services.ScriptService] public class MyWebServiceTwo : System.Web.Services.WebService { public MySoapHeader11 myHeader = new MySoapHeader11(); //普通方法,不需要SoapHeader验证 ? [WebMethod(Description = "描述1")] public string GetProductPrice(string ProductId) { return ProductId; } //需要SoapHeader验证 ? [SoapHeader("myHeader")] [WebMethod(Description = "描述2",EnableSession = true)] public string GetProductPrice2(string ProductId) { string msg = ""; //验证是否有权访问 ? if (!myHeader.IsValid(out??msg)) { return msg;//返回错误信息 ? } //Products pro = new Products(); return ProductId; }? } } 以下是客户端调用 WebServices.MyWebServiceTwo service = new MyWebServiceTwo(); WebServices.MySoapHeader11 header = new WebServices.MySoapHeader11(); header.PassWord = "admin"; header.UserID = "admin"; service.MySoapHeader11Value = header; //调用web?方法 ? string strPrice = service.GetProductPrice("AAAAAAAAAA");// 不需要验证 string strPrice2 = service.GetProductPrice2("BBBBBBBBBBB");// 需要验证 Response.Write(strPrice + "====" + strPrice2); 通过SoapHeader对用户口令进行验证,只有授权的用户才可以使用该接口。确保了访问接口用户的安全性。 要以安全的方式访问Web服务方法,可以考虑以下安全措施:? 是谁调用?--SoapHeader身份认证。 来自哪里?--访问IP认证。 加密传输?--SSL安全访问。 注:如果用户名和密码是从数据库中读取。这样如果频繁调用webservice中的方法,会增加对数据的频繁访问,影响效率。 可以考虑Session (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容