WebServices身份验证
发布时间:2020-12-16 22:17:58 所属栏目:安全 来源:网络整理
导读:导读 最近遇到一个问题,暴露在网络上的Web Service如何做身份验证,而不被其他人说是用。 众所周知,WebService是为企业需求提供的在线应用服务,其他公司或应用软件能够通过Internet来访问并使用这项在线服务。但在有些时候的某些应用服务不希望被未授权访
导读最近遇到一个问题,暴露在网络上的Web Service如何做身份验证,而不被其他人说是用。 众所周知,WebService是为企业需求提供的在线应用服务,其他公司或应用软件能够通过Internet来访问并使用这项在线服务。但在有些时候的某些应用服务不希望被未授权访问,那么此时我们可以一下几种方法来实现身份验证。 解决方案第一种方法:在WebServices中引入SoapHeaderWebServicesMySoapHeader.cs类 using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace WS.WebServices { public class MySoapHeader:System.Web.Services.Protocols.SoapHeader { //WebServices访问用户名 public string UserName { get; set; } //WebServices访问密码 public string Password { get; set; } public MySoapHeader() { //在此处添加构造函数逻辑 } public MySoapHeader(string uname,string upassword) { init(uname,upassword); } private void init(string uname,string upassword) { this.UserName = uname; this.Password = upassword; } //验证用户是否有权访问内部接口 private bool isValid(string uname,string upassword,out string msg) { msg = ""; if (uname == "admin" && upassword == "123456") { return true; } else { msg = "对不起,你无权调用此WebServices"; return false; } } //验证用户是否有权访问外部接口 public bool isValid(out string msg) { return isValid(this.UserName,this.Password,out msg); } } } WebService1.asmx using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Services; using System.Web.Services.Protocols; using WS.WebServices; namespace WS.WebService { /// <summary> /// WebService1 的摘要说明 /// </summary> [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)] // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。 // [System.Web.Script.Services.ScriptService] public class WebService1 : System.Web.Services.WebService { public WebService1() { //如果使用设计的组件,请取消注释以下行 //InitializeComponent(); } public MySoapHeader myheader; [WebMethod] public string HelloWorld() //普通WebServices,无需验证 { return "Hello World"; } [WebMethod] [SoapHeader("myheader")]//加入此特性标签的WebService需要验证,不加则为普通WebService无需验证 public string GetTime() { string msg = ""; //验证是否有权访问 if (myheader.isValid(out msg) == false) { return msg; } //如果有权访问,就返回当前时间 return DateTime.Now.ToString(); } } }
客户端
|