使用 AWS 构建简单的联合登录和用户配置文件

Architecting a simple, federated login and user profile with AWS

我编写了一个单页 Web 应用程序,访问者可以在其中创建表示为 JSON 文档并存储在 localStorage 中的内容。我现在想让这些访问者能够使用外部身份提供商(Google、Twitter、Facebook 等)登录,以便他们可以在我的应用程序中上传和共享他们的内容。

在 AWS 上构建此项目的最佳方式是什么?我是 云服务的新手

我想我需要一个 S3 存储桶来存储 JSON 文档,也许还需要一个 DynamoDB 来存储额外的用户配置文件信息(如昵称或电子邮件地址),但是 authentication/authorization/profile方面(Cognito、IAM、OpenID、OAuth,也许还有 Lambda 脚本将所有东西结合在一起)让我完全无法理解。 (坦率地说,尽管阅读了三天,我什至不确定我是否理解每一个的 differences/purpose。)

任何给我指明正确方向的建议都会有很大帮助。

Cognito Identity 为您的用户提供 AWS 凭证,这些凭证具有您定义的 AWS 资源权限。在您的应用程序中,您的用户可以使用 Facebook、Google、Twitter、任何 OIDC 提供商或您自己的开发人员身份验证登录并获取 AWS 凭证。

您似乎想使用自己的开发人员提供商。您对此的实施取决于您的用例。但是,您可以使用 Developer Authenticated Identities 功能将您的开发人员提供程序与 Cognito 结合使用: http://docs.aws.amazon.com/cognito/latest/developerguide/developer-authenticated-identities.html

每个用户都会获得一个 Cognito Identity ID。

如果您的 JSON 对象仅供其所有者使用,您可以使用 Cognito Sync,以便您的用户无论登录时使用什么设备都可以检索这些对象应用程序。

如果您的 JSON 对象需要在用户之间共享,您将需要开发另一个解决方案,如您提到的,可能使用 S3。

有关创建权限的帮助,请参阅此处: http://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html