2010-02-10 107 views
10

我在玩我的個人項目中使用亞馬遜網絡服務。我抓住了他們的適用於.NET的AWS開發工具包,我正在使用它,但我有點困惑。保持與亞馬遜網絡服務的祕密密鑰的祕密

  1. 訪問Web服務(在這種情況下,SimpleDB的,雖然我不認爲這是真的材料的問題)通過公/私密鑰對授權。

  2. 的AWS SDK用於創建一個客戶端對象.NET API要求私鑰:

    AWSClientFactory.CreateAmazonSimpleDBClient(publicKey, privateKey); 
    
  3. 這是一個客戶端應用程序,因此代碼將完全在客戶端上運行。

  4. 建議客戶端需要訪問我的私鑰才能訪問SimpleDB。但亞馬遜一再強調,我的私鑰不能離開我的控制。

這是沒有道理給我,所以我想我必須失去了一些東西。

客戶端應用程序是否是亞馬遜Web服務的錯誤模型,是否適用於他們的AWS SDK for .NET,或者我是否錯過了使客戶端應用程序完全合理的東西?有沒有一種很好的方法可以解決這個問題,而無需創建自己的代理服務來驗證客戶端並將他們的請求轉發給SimpleDB?

回答

7

您不需要實施遠程(AWS)服務前端的代理。只需實施一個簡單的小型身份驗證服務,該服務會在聯繫AWS時返回給客戶端的URL和標頭。您的已驗證的Web服務保留了AWS的祕密,並且僅向客戶端提供了已簽名的請求URL和標頭,然後該標籤將使用返回的信息進行實際工作調用。

通過這種方式,您可以避免AWS呼叫期間必須通過自己的服務器,節省延遲,帶寬,綁定服務器上的套接字,處理複雜故障等問題。您只需輕輕點擊前端爲客戶獲得正確的指示。

+0

我很感謝答案。我主要在桌面環境中工作,所以認證和提供簽名url和頭文件的可能性從未進入我的腦海。 – 2010-05-13 12:38:29

+0

如果你走這條路,是否仍然可以使用.NET API? – 2010-10-13 16:34:12

+1

我自己的問題的答案是「否」 - 您必須修改代碼以遠程調用AWSSDKUtils.HMACSign。 – 2010-10-18 18:44:14