Web Services的身份驗證

2022-02-26 11:16:23 字數 2069 閱讀 4460

web services的身份驗證

隨著web service

的出現,其應用也是越來越廣,同時也深受開發者的喜愛。下面我將引用乙個實際應用例子說明本文的目的。

假設有乙個網上購物系統

liveshopping

。在liveshopping

上,當客戶已經選好他自己想買的商品之後,接下來就該付帳了。

liveshopping

可以直接用信用卡付帳。另外假設

liveshopping

的電子付款是與

verisign

合作。也就是說

liveshopping

是verisign

的乙個客戶。假設

verisign

提供了一些

web services

供liveshopping

使用。假設這些方法是:

1)verifycc(string cc_no,string expire_date,float amt)

2)processcc(string transaction_type, string cc_no,string expire_date,float amt,cardholder holder)

其中方法

1驗證信用卡是否有效,方法

2是乙個

transaction

,將從信用卡上劃出

amt數額的交易款。

引數說明

cc_no

信用卡卡號碼

expire-date

有效日期

amt金額

transaction_type

事務型別,比如說

sale

,force

等等holder

持卡人資訊

這裡有個問題,如果

verisign

沒有身份驗證,那怎麼知道客戶是

liveshopping

。換句話說,如果沒有身份驗證,每個人都可以使用這兩個方法。所以身份驗證必不可少。

身份驗證有很多方法,這裡將介紹一種非常簡單的方法,並且在

.net

中實現。

可以應用

webservice

的soap

頭實現。也就是說可以利用

soap

頭傳遞驗證的資訊,比如使用者名稱,密碼等等。

首先從客戶端看,可以對其應用有乙個直觀的了解。**如下

private

void

button1_click(object

sender, system.eventargs

e)解釋一下,

authheader

為前面提及的

soap

頭的實現,其定義如下:

public

class

authheader:soapheader

繼續看看

webservices

是如何實現的,**如下:

public

class

webservices : system.web.services.webservice

return "invalid

authentication";}

}可以發現,加入了乙個

authheader

公共成員。這個可以供呼叫者傳輸驗證資訊。另外重要的一點是

soapheader

屬性,它明確了

soap

頭。具體可以參見

msdn。在

getpassword

()中,可以加入你的**。它第一步就是驗證資訊,如果驗證成功,繼續完成你的事情,如果不成功,則退出。

如果為了使應用更加安全,我們可以對資料進行加密,比如說我們可以對驗證資訊進行加密。可以在客戶端進行加密,然後到了

server

端進行解密。加密和解密是另外乙個話題,在這裡不多假描述。

從效能方面來看,加密解密這個過程將會降低效能。所以一般可以折中考慮,只對於一些敏感的資料進行加密和解密,比如說密碼等。除非是一些高安全性的應用,這時就另當別論了。

Web Services的身份驗證

web services的身份驗證 隨著 web service 的出現,其應用也是越來越廣,同時也深受開發者的喜愛。下面我將引用乙個實際應用例子說明本文的目的。假設有乙個網上購物系統 liveshopping 在 liveshopping 上,當客戶已經選好他自己想買的商品之後,接下來就該付帳了。...

Web Services的身份驗證

web services的身份驗證 隨著web service的出現,其應用也是越來越廣,同時也深受開發者的喜愛。下面我將引用乙個實際應用例子說明本文的目的。假設有乙個網上購物系統liveshopping。在liveshopping上,當客戶已經選好他自己想買的商品之後,接下來就該付帳了。lives...

WebServices身份驗證

最近遇到乙個問題,暴露在網路上的web service如何做身份驗證,而不被其他人說是用。mysoapheader.cs類 using system using system.collections.generic using system.linq using system.web namespa...