Web Service现在是很通用的技术,在Web Service我们需要验证用户是否有使用此Web Service的权限,并且要保证在通讯过程中的数据安全,防止数据在传输过程中被网络窃听。
首先是如何保证Web Service被授权使用,在这里我说的是通过SoapHeader来判断调用Web服务的用户。
1.定义一个安全上下文,并且继承于SoapHeader类
public class SecurityContext : SoapHeader
{
public string UserID;
public string Password;
}
UserID是定义的用户名,Password是密码,当然这个UserID和密码是可以通过数据库获得的,在这里,我们固定这两个变量的值
2.在Web Service中定义一个公开的变量,类型是SecurityContext
public SecurityContext m_SecurityContext;
3.定义一个校验用户名和密码的方法
private bool ValidateUser()
{
if (m_SecurityContext == null)
{
throw new Exception(\"没有指定用户名和密码\");
}
//这里可以直接访问数据库来验证密码
if (m_SecurityContext.UserID.ToLower() == (new AppSettingsReader()).GetValue(\"DTUser\", typeof(string)).ToString().ToLower()
&& m_SecurityContext.Password == (string)(new AppSettingsReader()).GetValue(\"DTPassword\", typeof(string)))
{
return true;
}
else
{
return false;
}
}4.在公开的,提供给客户调用的Web Service方法里调用校验的方法,如[WebMethod]
[SoapHeader(\"m_SecurityContext\")]
public DataSet GetChangedDepts(string DeptCode)
{
if (!ValidateUser())
{
return null;
}
return m_ServiceAll.GetChangedDepts(DeptCode);
}
5.在调用方制定用户名和密码
//实例化Web Service
MyWebService service = new MyWebService();
//实例化SoapHeader(用户上下文)