【发布时间】:2015-04-07 19:31:59
【问题描述】:
我正在构建一个以 Django REST 作为后端的 SPA。现在我正在使用标准的 Django 身份验证系统和User 模型。
我希望 SPA 上运行的 JS 能够将消息插入 AWS SQS(即sendMessage)。
AWS 在浏览器中从 JS 调用 sendMessage 时有 these doc。
他们还提供these docs 来说明如何验证用户身份。我现在的想法是使用 Amazon Cognito。来自FAQ:
问:如果我注册并验证自己的用户会怎样?
Amazon Cognito 可以与您现有的身份系统集成。和 一个简单的 API 调用,您可以为最终用户检索 Cognito ID 基于您自己的用户唯一标识符。一旦你有 检索到 Cognito 提供的 Cognito ID 和 OpenID Token,您可以 使用 Cognito 客户端 SDK 访问 AWS 资源并进行同步 用户数据。
我是否更正了这一点,我需要:
- 为我系统中的每个用户创建一个 IAM 用户。还是我只需要一个 IAM 角色?
- 当用户登录我的站点(Django 后端)时,我将拥有我的后端然后生成"a simple API call [to] retrieve a Cognito ID"
- 在用户加载 SPA 时发送该 Cognito ID。
- 使用浏览器中运行的 JS 中的 Cognito ID 调用
sendMessage到 SQS 队列
我在这里遗漏了什么吗?有没有办法删除 Django 用户后端和用户 IAM 用户,这样我就可以避免让两个用户列表保持同步?我找到了this project,但似乎没有维护。
更新: 似乎可能有另一种方法可以做到这一点,我根本不使用 Cognito,而是公开一个可以sign requests, "Query Request Authentication" 的端点。 This Heroku page 谈了一些关于构建签名服务的事情。
这实际上是一种替代选择吗?如果是,这些方法的优缺点是什么?
【问题讨论】:
标签: amazon-web-services amazon-sqs amazon-iam aws-sdk amazon-cognito