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

时间:2015-06-16 21:41:58

标签: amazon-web-services amazon-cognito

因此,我对Cognito关于其中一个陈述用例的亚马逊文档感到困惑:"使用您自己的身份系统......允许您的应用将数据保存到AWS云中#34;

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

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

我先打电话

  1. getId()(如果我使用自己的登录信息,我会通过什么值?因为我没有提供Facebook或Twitter ID?我如何通过我自己的数据库&#39 ; s生成用户ID?

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

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

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

    var identityId = AWS.config.credentials.identityId;

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

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

1 个答案:

答案 0 :(得分:2)

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

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

关于STS,这是SDK将在内部用于获取凭据的内容,但只要您使用SDK,就不必担心它。它不是Cognito的替代品,但它们都可以一起工作。