赛思黑
本文仅提供通过设置SoapHeader来控制非法用户对WebService的调用,如果是WebService建议使用WSE
3.0来保护Web服务,如果使用的是ViaualStudio2008可以使用WCF,WCF里面提供了的服务认证方法。以下提供一种基于SoapHeader的自定义验证方式。
1.首先要自定义SoapHeader,须继承System.Web.Services.Protocols.SoapHeader。usingSystem;usingSystem.Collections.Generic;usingSystem.Web;//////自定义的SoapHeader///publicclassMySoapHeader:System.Web.Services.Protocols.SoapHeader{privatestringuserName=string.Empty;privatestringpassWord=string.Empty;//////构造函数///publicMySoapHeader(){}//////构造函数//////用户名///密码publicMySoapHeader(stringuserName,stringpassWord){this.userName=userName;this.passWord=passWord;}//////获取或设置用户用户名///publicstringUserName{get{returnuserName;}set{userName=value;}}//////获取或设置用户密码///publicstringPassWord{get{returnpassWord;}set{passWord=value;}}}
2.添加WebService,并编写相应代码。usingSystem;usingSystem.Collections.Generic;usingSystem.Web;usingSystem.Web.Services;//////WebService的摘要说明///[WebService(Namespace="")][WebServiceBinding(ConformsTo=WsiProfiles.BasicProfile1_1)]publicclassWebService:System.Web.Services.WebService{//声明Soap头实例publicMySoapHeadermyHeader=newMySoapHeader();[System.Web.Services.Protocols.SoapHeader("myHeader")][WebMethod]publicstringHelloWord(){//可以通过存储在数据库中的用户与密码来验证if(myHeader.UserName.Equals("houlei")&myHeader.PassWord.Equals("houlei")){return"调用服务成功!";}else{return"对不起,您没有权限调用此服务!";}}}
3.客户端调用,分别使用不设置SoapHeader与设置SoapHeader。usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespaceApp{classProgram{staticvoidMain(stringargs){localhost.WebServiceservice=newlocalhost.WebService();//没有设置SoapHeader的服务调用Console.WriteLine("没有设置SoapHeader:"+service.HelloWord());Console.WriteLine();//将用户名与密码存入SoapHeader;localhost.MySoapHeaderheader=newlocalhost.MySoapHeader();header.UserName="houlei";header.PassWord="houlei";service.MySoapHeaderValue=header;//设置SoapHeader的服务调用Console.WriteLine("设置SoapHeader:"+service.HelloWord());Console.Read();}}}
4.运行应用程序,查看运行结果。再看一下直接通过浏览器的调用结果。点击HelloWord调用Web服务,结果如下:点击“调用”按钮,得到从服务器返回调用结果。添加自定义SoapHeader可以成功调用WebService,否则不能调用WebService,从而实现对WebService的非法调用。这种方法存在一定的弊端,就是在每一个WebService方法上都要进行一下验证,如果用户名与密码存储在数据库中,每调用一次WebService都要访问一次数据库进行用户名与密码的验证,对于频繁调用WebService来说,数据库压力很大。然而少量WebService调用这种方式还是一种不错的选择
2022-02-11 17:31:50 512查看 2回答
2022-01-05 12:01:43 436查看 2回答
2022-01-24 10:40:02 524查看 5回答
2022-06-30 14:05:01 556查看 6回答
小编为您整理有没有做ISO45001职业健康安全管理体系认证的机构、什么机构做ISO45001职业健康安全管理体系认证好点、健康安全环境管理体系认证、职业健康安全管理体系认证、职业健康安全管理制度相关iso认证知识,详情可查看下方正文!
小编为您整理山东三体系认证多少钱、山东iso9000认证哪里颁发、ISO认证,如何申请商标注册山东智达、山东ISO9000认证办理有什么意义、山东HACCP体系认证机构哪家效率高相关iso认证知识,详情可查看下方正文!
小编为您整理广东省守合同重信用企业申请条件是什么广东省守合同重信用企业申请条件有什么、守合同重信用企业证书申请条件、广州市申请守合同重信用企业的条件是、在哪申请守合同重信用企业、守合同重信用企业怎么申请相关iso认证知识,详情可查看下方正文!
小编为您整理守合同重信用、浙江守合同重信用企业公示办法-守合同重信用申报、守合同重信用申请理由、守合同重信用事迹、守合同重信用--信用管理制度(新版)相关iso认证知识,详情可查看下方正文!
做质量认证工作和hr工作哪个更好?iso9002和iso9001哪个更好?
小编为您整理cmmi3和CMM5哪个更好、cima和cma哪个更好、质量管理体系cnasukas做资质哪个更好、CIMA和CMA哪个更好、CMA和CPA哪个更好相关iso认证知识,详情可查看下方正文!