上方廣告

2009年2月28日 星期六

WebService 利用SOAP標頭來進行帳號密碼驗證

利用WebService來撰寫三層式架構的中間層是一個不錯的方法,但是 由於WebSerivce夠開放(資料庫存取直接暴露在網際網路上),這是微軟給予有心人士天大的恩賜,難免有一些安全性不足的缺點,在此可以利用 SOAP標頭來進行一些基本的安全防護,至少可以避免一些不會必要的攻擊。

在WebService端撰寫以下語法
[WebMethod]
[SoapHeader("soapSet")]
public bool ValidUser()
{
  if (soapSet.UID != "ID") return false;
  if (soapSet.Pwd != "PassWord") return false;
  return true;
}

[WebMethod]
[SoapHeader("soapSet")]
public DataSet GetSqlString()
{
  DataSet myDs = default(DataSet)
  if (ValidUser() == false) return myDs;//未通過驗證想要執行的資料庫操作
}

使用方法
WeBService.SqlWebService myWebService = new WeBService.SqlWebService();
WeBService.Authentication soapSet = new WeBService.Authentication();

soapSet.UID = "ID";
soapSet.Pwd = "PWD";

myWebService.Url = ConfigurationManager.AppSettings["WinServiceUrl"].ToString();
myWebService.Discover();
myWebService.AuthenticationValue = soapSet;