做WebService验证一个是Web服务器上代码另外一台机器只需要调用,不管相隔多远都可以调用成功,我做的是一个简单的客户端只有在正确的用户名和密码下才能调用到Web服务器上的方法,首先在Web服务器上写入新建两个cs一个MySoapHeader.cs 一个为Service.cs:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.Services;
using System.Web.Services.Protocols;

/**//// <summary>
/// SoapHeader 的摘要说明
/// </summary>
public class MySoapHeader : SoapHeader
...{
private string m_username;
private string m_password;
public string Username
...{
get
...{
return m_username;
}
set
...{
m_username = value;
}
}
public string Password
...{
get
...{
return m_password;
}
set
...{
m_password = value;
}
}
public MySoapHeader()
...{
//
// TODO: 在此处添加构造函数逻辑
//
}
}
public class HeaderCheck
...{
public static void check(Service srv)
...{
if (!(srv.MyHeader.Username == "admin" && srv.MyHeader.Password == "admin"))
...{
throw new SoapException("Audit Fail", SoapException.ClientFaultCode, "Security");
}
}
public HeaderCheck()
...{
//
// TODO: 在此处添加构造函数逻辑
//
}
}


using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class Service : System.Web.Services.WebService
...{
private MySoapHeader m_myheader;
public MySoapHeader MyHeader
...{
get
...{
return m_myheader;
}
set
...{
m_myheader = value;
}
}

[WebMethod]
public string HelloWorld()
...{
return "Hello World";
}
[SoapHeader("MyHeader")]
[WebMethod(Description = "Plus Two Int")]
public int Plus(int a, int b)
...{
HeaderCheck.check(this);
return a + b;
}
}
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class _Default : System.Web.UI.Page 
...{
protected void Page_Load(object sender, EventArgs e)
...{
localhost.Service ws = new localhost.Service();
localhost.MySoapHeader header = new localhost.MySoapHeader();
header.Username = "admin";
header.Password = "adnin";
ws.MySoapHeaderValue = header;
int r = ws.Plus(1, 2);
Response.Write(r.ToString());
}
}
本文介绍了一种基于WebService的验证机制实现方案,通过自定义SoapHeader进行远程身份验证,确保只有合法用户能够调用Web服务器上的方法。
5610

被折叠的 条评论
为什么被折叠?



