2010-02-10 98 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