C 呼叫Web Service時的身份驗證

2022-03-12 19:17:24 字數 1841 閱讀 3254

**:

在專案開發,我們經常會使用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 

42 43 return false;

44 }

45 catch (exception ex)

46 

52 53 return false;

54 55 }

56 finally

57 

59 60 return true;

61 }

62 63 private static ws_webasic.ws_webasic webasic =null;//實現華ws_webasic.ws_webasic

64 65 /**//// 

66 /// ws_webasic初始化

67 /// 

68 public static ws_webasic.ws_webasic ws_webasic

69 

82 }

83 return webasic;

84 }

85 }

注:(1)必須引用 system.net;

驗證是有時速度會比較慢,主要是因為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...