在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
最近遇到一个问题,暴露在网络上的Web Service如何做身份验证,而不被其他人说是用, 花了一天的时间去看书,了解到三种方法,再下面记录其中两种,另一种是Form验证,个人并不能完全了解清楚,所以也不在这误人子弟了,闲话不说,开始: 第一种方案:通过 SOAP Header 首先需要我们自己去实现一个有身份验证信息的类,这个类继承System.Web.Services.Protocols.SoapHeader,而且定义两个成员变量,一个为UserName,一个为PassWord. public class MySoapHeader:SoapHeader { public string UserName { get; set; } public string PassWord; { get; set; } } 也可以在此类中加入验证方法,当然需要看您项目的具体规划 接下来是Web Service的写法 代码 public class WebService : System.Web.Services.WebService { public WebService() { //如果使用设计的组件,请取消注释以下行 //InitializeComponent(); } public MySoapHeader header; ////定义用户身份验证类变量header [WebMethod(Description = "用户验证测试")] [System.Web.Services.Protocols.SoapHeader("header")]//用户身份验证的soap头 public string HelloWorld() { string userName = header.UserName; string passWord = header.PassWord; return "Hello World"; //加入验证权限的方法,如果之前的SOAPHeader中已经有方法这里可以直接调用 } } 客户端调用时的代码比较简单: 代码 com.WebService test = new com.WebService();//你的web Service MySoapHeader Header = new MySoapHeader();//web引用创建soap头对象 //设置soap头变量 Header.UserName = "Zane"; Header.PassWord = "Yao"; test.MySoapHeaderValue = Header; //调用web 方法 Response.Write(test.HelloWorld()); 这样就完成了~ 第二个方案: 将web服务程序设为集成windows身份验证,当然需要将匿名访问关闭, 客户端web引用代码 Test.WebReference.Service wr = new Test.WebReference.Service(); //生成web service实例 wr.Credentials = new NetworkCredential("用户名","密码"); Response.Write(wr.HelloWorld()); //调用web service方法 |
请发表评论