如何使用AWS cognito与自定义身份验证来创建临时s3上载安全令牌

Mon*_*key 5 amazon-web-services amazon-cognito

所以我对Cognito关于其中一个用例的亚马逊文档感到有些困惑:"使用您自己的身份系统......允许您的应用程序将数据保存到AWS云".

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

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

我先打电话吗?

  1. getId()(如果我使用自己的登录,我会通过什么值 - 因为我没有提供facebook或Twitter ID?我如何传递我自己的db生成的用户ID?

  2. 来自congito API的AWS.CognitoIdentity.getCredentialsForIdentity()方法......或者我可能需要新建一个AWS.CognitoIdentity?

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

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

var identityId = AWS.config.credentials.identityId;

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

我还阅读了一些关于AWS STS服务的内容 - 是否可以替代使用Cognito?

Alb*_*ora 2

您可以在这篇 AWS Mobile 博客文章中找到一个示例,并在另一篇博客文章中找到经过开发人员身份验证的身份与常规身份之间的差异。

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

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