通过SOAPHeader增强WebService的安全性
阅读目录
一:前言
二:SOAPHeader实现身份验证步骤
三:通过SOAPHeader实现身份验证步骤实例
一:前言
在互联网上,调用WebService往往需要进行身份验证,我们的WebService不可以让任何人都能够调用的,一般能调用我们的WebService的不是我们的客户,就是我们的合作方,调用WebService时我们需要身份验证,只有通过身份验证的用户才能调用相应的WebService资源,我们可以通过SOAPHeader自定义的身份验证方式实现验证
二:SOAPHeader实现身份验证步骤
1:自定义一个类比如CustomSOAPHeader,该类继承自SOAPHeader
2:在CustomSOAPHeader类里面写我们自定义验证的逻辑
3:在WebService中声明CustomSOAPHeader类型的公共成员header,并在暴露给客户端调用的方法中调用header的自定义验证方法实现身份验证功能
4:在客户端首先创建CustomSOAPHeader类型的实例对象header,然后将用户名和密码传入header,最后调用WebService实例对象的CustomSOAPHeaderValue属性将header传入WebService
三:通过SOAPHeader实现身份验证步骤实例
1:Service.cs
public class CustomSOAPHeader : SoapHeader
{
public CustomSOAPHeader()
{
//
//TODO: 在此处添加构造函数逻辑
//
}
public string name;
public string password;
public bool IsValid(string strUserName, string strPassword)
{
if (strUserName == "三星电子" && strPassword == "abc")
return true;
else
return false;
}
}
public class Service : System.Web.Services.WebService
{
public Service ()
{
//如果使用设计的组件,请取消注释以下行
//InitializeComponent();
}
public CustomSOAPHeader header;
[WebMethod]
[SoapHeader("header")]
public string HelloWorld()
{
if (header.IsValid(header.name, header.password))
return "SOAP标头验证成功,返回HelloWorld";
return "SOAP标头验证失败";
}
}
2:Program.cs
static void Main(string[] args)
{
localhost.Service service = new localhost.Service();
localhost.CustomSOAPHeader header = new localhost.CustomSOAPHeader();
header.name = "三星电子";
header.password = "abc";
service.CustomSOAPHeaderValue = header;
Console.WriteLine(service.HelloWorld());
Console.ReadLine();
}