axe*_*ann 10 amazon-s3 amazon-web-services node.js jwt amazon-cognito
我已经阅读了这篇文章以及关于如何在API中使用Cognito令牌的AWS回复 ? 以及如何使用AWS cognito和自定义身份验证来创建临时s3上传安全令牌
我还不清楚是否有一个更简单的解决方案来保护S3访问.
我有一个移动客户端和一个node.js后端.客户端使用后端进行身份验证,并接收jwt accessstoken以进一步调用我的后端.除了与我自己的后端进行通信之外,用户还应该可以上传和下载S3的文件.我正在寻找最简单的解决方案,以确保只有对我的后端有有效accessstoken的用户才能上传到S3.
我可以执行以下操作(这是基于此博客文章http://blog.backspace.academy/2015/03/using-cognito-with-nodejs-part-2.html):
我错过了什么吗?有更简单的方法吗?我假设没有办法让客户端通过我自己的自定义node.js用户访问AWS/S3/Cognito并让S3/Cognito通过调用我自己的node.js API验证令牌,该API可以验证此令牌.
你已经明白了。您可以从后端获取凭证并将 AWS 凭证交付给客户端。使用会过期的临时凭证时,您将需要会话密钥 - 您绝对应该对移动应用程序客户端使用临时凭证。
如果您想使用自己的后端(在后端使用用户名/密码)对用户进行身份验证,您可以使用Amazon Cognito 的开发人员身份验证功能。如果您的用户将使用 Facebook 进行身份验证,您只需将 Facebook 访问令牌传递给 Amazon Cognito,如Facebook 集成主题中所述。
无论哪种方式,您将在 AWS 文档中看到的“标准”流程是让 Amazon Cognito 将 AWS 会话凭证直接传送到移动应用程序(而不是通过后端)。使用 Developer Authenticated Identities 时,移动应用程序交换 OpenID Connect 令牌(由后端从 Cognito 的GetOpenIdTokenForDeveloperIdentity 调用检索并在响应身份验证请求时传送到移动应用程序)以调用 Cognito 的GetCredentialsForIdentity。使用 Facebook 时,您可以只传递 Facebook 访问令牌而不是 OpenID 令牌。无论哪种方式,通过使用此流程,您都可以使用“标准”Cognito 将 AWS 凭证获取到应用程序,如 iOS、Android、JavaScript、Unity 和 Xamarin 中所示获取凭据主题。
话虽如此,您确实可以代表用户从后端获取 AWS 凭证并将其推送到客户端,但请记住,所有 AWS 移动开发工具包示例都假设您使用的是 Cognito,如图所示上面的获取凭据主题,因此您必须考虑到这一点。如果您想查看通过您自己的后端路由凭证的示例,请参阅 API Gateway Secure Pet Store 示例(后端代码、客户端代码)
归档时间: |
|
查看次数: |
5038 次 |
最近记录: |