在将文件上载/下载到AWS S3之前使用Web服务器进行身份验证

问题描述 投票:0回答:2

我想创建一个Android应用程序并使用AWS s3作为存储服务,以允许用户上传和下载文件。我已经研究了一些关于S3 REST服务的东西,在配置IAM Role for Bucket等之后,它可以帮助我实现相同的目标。

现在的情况是,我想只允许我的应用程序的注册用户/在我的网络服务器上配置的访问控制(用户名/密码)上传/下载文件,并且不允许任何只有应用程序访问权限的人。

查看下面的链接,使用REST了解AWS S3上传文件

http://www.tothenew.com/blog/file-upload-on-amazon-s3-server-via-rest-api-call/

简单地说,除了上面链接中描述的内容之外,我只需要回答以下问题:

1)如何只允许注册用户? 2)在生产应用程序中对AWS S3 secretKey等进行硬编码是一种好习惯。 3)在我的应用程序中对这些值进行硬编码是否会导致我的应用程序的未注册用户能够将文件上载/下载到aws s3的情况?

欢迎所有建议,如果他们解决了部分难题,我完全不知道解决方案

这将非常有帮助......,在此先感谢,

android amazon-s3 restful-authentication
2个回答
1
投票
  1. 当然,在代码中对密钥进行硬编码并不是最佳做法。
  2. 现在,如果您想要分离授权用户和未授权用户,那么执行此工作的AW服务就是AWS Cognito。你可以在aws文档https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-console.html中找到很多

Cognito的一些事情:

  1. 您有Amazon Cognito用户池提供: 注册和登录服务。 用于登录用户的内置可自定义Web UI。通过Facebook,Google和使用亚马逊登录进行社交登录,以及从您的用户池登录SAML身份提供商。 用户目录管理和用户配置文件。安全功能,如多重身份验证(MFA),检查受损凭据,帐户接管保护以及电话和电子邮件验证。
  2. 您有Amazon Cognito Identity Pools(联合身份),它提供: Amazon Cognito用户池中的用户 对外部身份提供商(如Facebook,Google或基于SAML的身份提供商)进行身份验证的用户 用户通过您自己的现有身份验证过程进

0
投票

这在我的应用程序中如何工作

  1. 使用aws cognito询问用户注册/登录
  2. 通过api网关部署api,该网关充当S3服务的代理
  3. 对于api,将AWS cognito应用为api gatewayenter image description here中的Authorizer enter image description here

然而,这对对象的大小有限制

我尝试的选项是使用签名的URL,这是由注册用户访问请求后端应用程序吐出的。我的实现包括以下1.客户端使用带有lambda实现的api请求签名的URL 2. Lambda生成签名的URL并传递响应。 3.在创建签名的URL时,从参数存储(参见EC2参数存储)中使用key / id来保护角色并使用KEY。

我想从你的用例来看,EC2参数存储(而不是数据库)应该足以安全地保密。

© www.soinside.com 2019 - 2024. All rights reserved.