2010-08-27 80 views
0

我有這個web服務在工作。對於該web服務,我們的部門已經開發了一個客戶端來使用web服務。防止從不同的客戶端應用程序調用webservice

我們想要防止的是,他們開發任何其他客戶端來使用它。

是否有任何算法,我們可以改進我們的客戶端和web服務通信來驗證消費客戶端是我們的應用程序?

我有一個想法,那就是我們可以開發一個關於必須與服務器上的計算結果匹配的時間(寬限期5秒)的加密算法。

,但我想可以肯定,對於沒有最好的做法...或者,如果它仍然是一個好主意......

(我的英語很抱歉)

+0

您會或不會分發您的客戶? – Jasper 2010-08-27 02:11:02

+0

我會將它分發給特定的Costumers(也許20個costumers)...我不想要的是他們開發自己的客戶端來使用webservice ... – 2010-08-27 02:14:43

+1

爲什麼不呢?建立您的API和您的收費模式是否鼓勵您創新? – 2010-08-27 03:11:13

回答

1

我認爲Web服務(例如基於SOAP或REST)的一部分就是發佈一個接口,它可以讓您的服務潛在地被各種客戶端實現所使用(互操作性是Web的動機之一服務)。

如果您想鎖定您的客戶使用的服務,將其作爲「Web服務」的唯一好處可能就是您實施它的工具和庫。你可能想考慮這是否值得(這確實是可能的)。

如果您分發您的客戶端應用程序,那麼可能會確保請求來自該客戶端的任何保護機制都必須嵌入此客戶端。因此,無論您嵌入的任何祕密機制可能只會被混淆到某個特定點,但可被更高級的用戶破解。

+0

我很確定所有的東西都是易碎的,但是如果路上有更多的石塊,很多東西就會坐在一邊... – 2010-08-27 02:28:16

+0

這真的取決於用戶的技術水平。如果您使用共享密鑰發送某些內容,則最終會出現與DVD/CSS保護系統相同的問題(打破一個,將其全部打破)。如果您使用私鑰/證書(每個給定應用一個)發送某個內容,如果您懷疑犯規行爲,則可以撤消給定的證書。無論哪種方式,如果有人願意反彙編代碼,他們可能會找到祕密/私鑰(因爲您希望它被使用,所以您無法很好地鎖定它)。 – Bruno 2010-08-27 02:35:39

1

你在找什麼被稱爲「身份驗證」。

+0

我可以給他們一個用戶和一個密碼,然而他們將能夠開發自己的客戶端應用程序....我會更好地要求一些「授權」算法... – 2010-08-27 02:10:54

+0

一種形式認證使用客戶端證書。將證書分發給單個應用程序,並僅允許該證書。 – 2010-08-27 02:12:53

+0

哦,聽起來不錯...任何想法從服務器更新過期時這些證書? – 2010-08-27 02:21:14

0

您需要應用程序認證。對於基於Web的應用程序和服務,請嘗試查看兩腳OAuth。在OAuth中,您爲訪問您的服務的每個客戶端應用程序發出一個id和一個祕密,並且每個消息都被簽名以獲得額外的安全性。

相關問題