C#調用Web Service時的身份驗證
在System.Net中提供了一個NetworkCredential,經過它咱們能夠在網絡中提供一個憑證,只有得到該憑證的用戶才能訪問相應的服務的權限。在這裏咱們也使用NetworkCredential。在NetworkCredential中,咱們經過提供WebService發佈所在的服務器名稱,以及登陸服務器並調用該WebService的用戶名及密碼(在IIS中配置)。
在調用WebService時設置其Credential屬性,把上面獲得的Credential憑證賦值給它,這樣只有使用提供的用戶名及密碼才能調用WebService服務了而其餘用戶則沒法訪問,這樣就能能知足防止WebService被別人調用了。
至於主機名,用戶名及密碼,對於B/S能夠經過webconfig來配置,對於C/S可使用應用程序配置文件。這樣就能靈活地配置了。
以下以C/S爲例來講明,首先咱們提供一個服務器網絡憑證,而後經過WebRequest來驗證鏈接是否成功。固然了,爲了保存用戶名與密碼等的安全,能夠對其進行加密等手段來保證其安全。
如下是主要源代碼:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

(1)必須引用 System.Net;
(2)對WebService發訪問,在IIS裏取消匿名訪問權限,若容許匿名訪問,就沒有必須提供驗證憑證了。IIS裏怎麼取消匿名訪問 權限請參照IIS相關文章,這裏不在累贅。
驗證是有時速度會比較慢,主要是由於myWebResponse = myWebRequest.GetResponse();