在專案開發,我們經常會使用webservice,但在使用webservice時我們經常會考慮以下問題:怎麼防止別人訪問我的webservice?從**引用我的webservice?對於第乙個問題,就涉及到了webservice是安全問題,因為我們提供的webservice不是允許所有人能引用 的,可能只允許本公司或者是通過授權的人才能使用的。那怎麼防止非法使用者訪問呢?很容易想到通過一組使用者名稱與密碼來防止非法使用者的呼叫 。
在system.net中提供了乙個networkcredential,通過它我們可以在網路中提供乙個憑證,只有獲得該憑證的使用者才能訪問相應的服務的許可權。在這裡我們也使用networkcredential。在networkcredential中,我們通過提供webservice發布所在的伺服器名稱,以及登入伺服器並呼叫該webservice的使用者名稱及密碼(在iis中配置)。
在呼叫webservice時設定其credential屬性,把上面得到的credential憑證賦值給它,這樣只有使用提供的使用者名稱及密碼才能呼叫webservice服務了而其他使用者則無法訪問,這樣就能能滿足防止webservice被別人呼叫了。
至於主機名,使用者名稱及密碼,對於b/s可以通過webconfig來配置,對於c/s可以使用應用程式配置檔案。這樣就能靈活地配置了。
如下以c/s為例來說明,首先我們提供乙個伺服器網路憑證,然後通過webrequest來驗證連線是否成功。當然了,為了儲存使用者名稱與密碼等的安全,可以對其進行加密等手段來保證其安全。
以下是主要源**:
code
1 /**
2 /// 伺服器網路憑證
3 ///
4 ///
5 public static networkcredential mycred()
6
14 /**
15 /// 驗證是否成功連線到伺服器,若連線成功,則返回true
16 ///
17 /// 伺服器webservice url
18 ///
19 public static bool credential(string url)
20
34 }
35 catch (webexception wex)//無法連線到伺服器,可能是因為伺服器錯誤或使用者名稱與密碼錯誤
36
43 return false;
44 }
45 catch (exception ex)
46
53 return false;
55 }
56 finally
57
60 return true;
61 }
63 private static ws_webasic.ws_webasic webasic =null;//實現華ws_webasic.ws_webasic
65 /**
66 /// ws_webasic初始化
67 ///
68 public static ws_webasic.ws_webasic ws_webasic
69
82 }
83 return webasic;
84 }
85 }
注:(1)必須引用 system.net;
(2)對webservice發訪問,在iis裡取消匿名訪問許可權,若允許匿名訪問,就沒有必須提供驗證憑證了。
驗證是有時速度會比較慢,主要是因為mywebresponse = mywebrequest.getresponse();時速度比較慢。
通過以上的實現,就實現了webservice的安全訪問問題。
C 呼叫Web Service時的身份驗證
在專案開發,我們經常會使用webservice,但在使用webservice時我們經常會考慮以下問題 怎麼防止別人訪問我的webservice?從 引用我的webservice?對於第乙個問題,就涉及到了webservice是安全問題,因為我們提供的webservice不是允許所有人能引用的,可能只...
C 呼叫Web Service時的身份驗證
在專案開發,我們經常會使用webservice,但在使用webservice時我們經常會考慮以下問題 怎麼防止別人訪問我的 webservice?從 引用我的webservice?對於第乙個問題,就涉及到了webservice是安全問題,因為我們提供的 webservice不是允許所有人能引用 的,...
C 動態呼叫WebService
使用示例 trycatch exception ex 類檔案 using system using system.web using system.xml using system.collections using system.net using system.text using system...