【问题标题】:Authenticate with web server before uploading/downloading file to AWS S3在将文件上传/下载到 AWS S3 之前使用 Web 服务器进行身份验证
【发布时间】:2019-05-22 12:29:44
【问题描述】:

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

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

也请查看下面的链接,了解有关使用 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


    【解决方案1】:
    1. 当然,在代码中硬编码密钥不是最佳做法。

    2. 现在,如果您想将授权用户和未授权用户分开,一项可以完成这项工作的 AW 服务就是 AWS Cognito。您可以在 aws 文档https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-console.html

    3. 中找到很多内容

    关于 Cognito 的一些事情:

    1. 您拥有提供的 Amazon Cognito 用户池:

      • 注册和登录服务。
      • 用于登录用户的内置、可自定义的 Web UI。 使用 Facebook、Google 进行社交登录和使用 Amazon 登录,以及使用 SAML 身份提供商从您的用户登录 游泳池。

      • 用户目录管理和用户配置文件。 安全功能,例如多因素身份验证 (MFA)、检查受损凭据、帐户接管 保护,以及电话和电子邮件验证。

    2. 您拥有的 Amazon Cognito 身份池(联合身份)提供:

      • Amazon Cognito 用户池中的用户
      • 通过外部身份提供者进行身份验证的用户,例如 Facebook、Google 或基于 SAML 的身份提供商
      • 通过您自己现有的身份验证过程进行身份验证的用户

    【讨论】:

    • 虽然我考虑了您的回答,但我只想了解您对以下方法的看法:将存储桶密钥存储在数据库中,并请求您的后端服务在验证用户身份后将其发回给您跨度>
    • 如果我能很好地理解您的问题。您可以使用 aws sdk docs.aws.amazon.com/sdk-for-java/v1/developer-guide/…,这样您就可以立即访问您的 s3 存储桶,而无需在代码中传递您的密钥。虽然如果您不想使用 sdk(我推荐它),并且您不太关心项目的安全性,您可以使用您的代码就好了!
    【解决方案2】:

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

    1. 要求用户使用 aws cognito 注册/登录
    2. 通过 api 网关部署一个 api,充当 S3 服务的代理
    3. 对于api,在api gateway申请AWS cognito作为Authorizer

    但是这对对象的大小有限制

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-06
      • 1970-01-01
      • 1970-01-01
      • 2010-10-21
      • 2018-06-17
      • 1970-01-01
      相关资源
      最近更新 更多