Amazon S3 REST API;api密钥第一次在客户端和服务之间是如何传输的



在我的研究中,我遇到了许多不同的来源,但不知何故我无法看到,哪一方正在生成私有api密钥以及另一方如何获得它。

许多人推荐Amazon S3 Restful API作为榜样,因此,如果我了解这一点,我可以为自己的目的创建类似的东西。

Amazon S3 REST API。

。这里的示例很好地解释了这个过程,但是它无法解释哪一方生成api密钥?因此,在用户注册时,是服务端生成私有api密钥并将其分配给数据库中的用户id吗?

如果是这种情况,客户端需要知道API密钥,以便为每个请求创建签名,以便服务可以实际验证它。那么双方如何获得私有API密钥呢?

在我的情况下,我将有一个iPhone应用程序和一个AngularJS web应用程序作为我的客户端与RESTful API服务对话。

许多谢谢,

首先,您不希望向客户提供密钥。一般来说,这是一场安全噩梦。(此外,密钥创建可能需要几个小时才能传播。你必须管理每个密钥的权限,等等)所以所有的签名都是由你的服务器完成的,你的密钥不会离开你的服务器。

您希望服务器拥有S3密钥,但只返回签名链接,这些链接将使客户端能够执行某些操作(GET特定文件或PUT文件)。这有点像母亲可能-我的游戏:客户端向您请求一个"S3签名链接",然后它可以与S3对话来做一件事。由于您的服务器正在做少量的工作(检查请求是否被授权,然后返回一个签名的URL),因此您将能够很好地扩展。

对于某些事情,如"列表文件"或"删除文件",它可能是更好的为您的服务器调用S3(即在客户端的web请求中向S3发出web请求)并将结果返回给客户端(而不是与签名链接混淆)。但如果你这样做,你可能会在扩展时遇到问题——除非你使用了正确的技术。(例如,你想要一个像node.js这样的事件服务器)

请注意,对于PUT请求,签名链接必须提前指定许多内容(如文件类型等)。您必须仔细阅读AWS规范。

小心糊涂的副手问题。您的代码将具有一个可以查看所有用户文件的密钥,因此您将负责用户之间的安全性。

最新更新