【问题标题】:how to use AWS cognito with custom authentication to create temporary s3 upload security token如何使用 AWS cognito 和自定义身份验证来创建临时 s3 上传安全令牌
【发布时间】:2015-09-01 22:22:15
【问题描述】:

因此,我对 Cognito 上的 Amazon 文档关于他们陈述的用例之一感到有些困惑:“使用您自己的身份系统......允许您的应用程序将数据保存到 AWS 云”。

在我的情况下,我想给他们 aws 令牌以从移动客户端直接上传到 s3,而无需将我的 aws 密钥放在客户端设备上。

为了在服务器端实现这一点 - 我如何生成正确的凭据,以便客户端可以在客户端应用程序上使用此身份上传到 s3?

我先打电话吗

  1. getId()(如果我使用自己的登录名,我会传递哪些值 - 因为我没有提供 facebook 或 twitter ID?如何传递我自己的数据库生成的用户 ID?

  2. AWS.CognitoIdentity.getCredentialsForIdentity() congito API 中的方法...或者我必须新建一个 AWS.CognitoIdentity?

任何链接到一个很好的例子?我在文档本身中找不到任何完整的示例。

例如,亚马逊在他们的文档中说

var identityId = AWS.config.credentials.identityId;

立即为您的最终用户检索一个身份标识,但是看着它,它似乎是一个属性,而不是一个 id 工厂。它如何生成唯一 ID,或者我的所有用户都共享一个身份 ID?是否有某种我可以从中派生的凭据,然后我可以将其传递给我的移动客户端以获取对 s3 的上传权限?

我还阅读了一些有关 AWS STS 服务的信息 - 这是使用 Cognito 的替代方法吗?

【问题讨论】:

  • 我对您的要求并不完全清楚:您 (1) 是否希望用户登录到您自己的后端身份验证服务?或者 (2) 您是否希望用户无需登录,但仍能够上传到 S3(无需嵌入您的 AWS 凭证)?

标签: amazon-web-services amazon-cognito


【解决方案1】:

您可以在this other blog post 中找到示例in this AWS Mobile blog post 以及开发人员认证身份与常规身份之间的区别。

基本上,流程是您的应用将针对您的后端进行身份验证,然后您的后端将调用 GetOpenIdTokenForDeveloperIdentity 并将生成的令牌和身份 ID 发送到用户的应用。用户的应用程序可以使用此令牌通过 SDK 获取 Cognito 凭证,并使用此凭证调用 S3 或其他 AWS 服务。每个用户都有自己的凭据,因此他们只能访问自己在 S3 中的资源。

关于 STS,这就是 SDK 内部用来获取凭据的方式,但只要您使用 SDK,您就不必担心它。它不是 Cognito 的替代品,但它们可以协同工作。

【讨论】:

  • 我可以在没有 cognito 的情况下使用 STS 吗?那会是一个更简单的解决方案吗?
  • 嗯,您可以,但 Amazon Cognito 再次提供了 Web 身份联合所提供功能的超集。一些好处包括,允许用户拥有访客访问权限,然后将社交登录链接到同一用户。 Cognito 还提供跨设备的数据同步功能。您可以阅读这篇文章 (blogs.aws.amazon.com/security/post/Tx3SYCORF5EKRC0/…) 以进一步了解使用 Amazon Cognito 的好处。
猜你喜欢
  • 2018-05-22
  • 1970-01-01
  • 2020-08-30
  • 1970-01-01
  • 2020-01-26
  • 2019-10-25
  • 1970-01-01
  • 2016-04-11
  • 2018-06-07
相关资源
最近更新 更多