使用 Amazon Cognito 进行简单的用户注册

Posted

技术标签:

【中文标题】使用 Amazon Cognito 进行简单的用户注册【英文标题】:Simple user registration with Amazon Cognito 【发布时间】:2015-03-13 01:46:28 【问题描述】:

在构建 android 应用程序的过程中,我遇到了用户管理的严重问题。

我看到到处都有允许用户使用 google、facebook、amazon、twitter 等(Amazon Cognito、Janrain、Google Identity Toolkit)在我的应用程序中注册的服务。

理想情况下,我希望在整个应用程序中使用 Amazon Web Services,因此需要使用 Amazon Cognito。然而,据我所知,Cognito 仅提供通过 Facebook、Amazon 和 Google 进行的简单用户注册,并增加了与开发人员身份验证身份合并的能力。

在对开发自己的身份提供程序结构、实施身份验证协议和所有这些爵士乐进行了多个小时的研究之后,我得出的结论是,我不知道我在该领域做什么,我会得到最好的服务暂时不要管它。

我只想让用户通过电子邮件、用户名和密码注册使用我的应用程序,并可以选择稍后通过 Amazon Cognito 与他们的社交帐户合并。我似乎在任何地方都找不到任何直截了当的答案。

那么,如何创建一个简单的用户注册流程来创建用户,然后这些用户可以通过 Amazon Cognito 链接到他们的其他社交账户?

【问题讨论】:

【参考方案1】:

Amazon Cognito 不是身份验证提供商,因此如果您想使用电子邮件、用户名和密码注册用户,则必须实施自己的后端,并使用数据库来存储所有这些用户信息。既然您说您想在您的应用程序中使用 AWS,那么将您的后端与 Amazon Cognito 集成将允许您定义策略,以便您的用户可以访问 AWS 中的其他资源。例如,使用允许您的用户执行此操作的策略,直接从您的应用程序将文件上传到 S3。您也可以使用 Amazon Cognito 将您的用户帐户与其他身份提供商用户(例如:Facebook 用户)相关联。

如果您想更好地了解 Cognito 如何与经过开发人员身份验证的用户一起工作,请查看这篇博文:http://mobile.awsblog.com/post/Tx2FL1QAPDE0UAH/Understanding-Amazon-Cognito-Authentication-Part-2-Developer-Authenticated-Ident

【讨论】:

我在搜索过程中偶然发现了那个帖子。而且我知道 Cognito 不是身份验证提供商。我想正确的问题是“我如何使用自己的后端注册和验证用户,以便在他们选择时通过 Cognito 将这些用户链接到其他帐户?” 由于我不想处理设置 Oauth 服务器、编写端点逻辑、担心安全性等问题,是否可以使用 Parse 或 Firebase 之类的东西进行用户注册/身份验证功能并将其用作与 Cognito 的“开发人员身份验证身份”集成? 您可以拥有比 Oauth 更简单的东西(顺便说一下,Oauth 不是身份验证协议 [1]),但您肯定需要自己编写和运行一些后端代码。如果您决定使用 Parse 或其他一些提供程序,您仍然需要从您的服务器端代码调用此 Cognito API [2] 才能使用已开发的经过身份验证的身份。 [1] oauth.net/articles/authentication [2] docs.aws.amazon.com/cognitoidentity/latest/APIReference/…【参考方案2】:

我也很好奇我们如何将身份验证集成到 Amazon Cognito 中,并得出结论认为使用身份验证服务的最佳方式。

我们是一家小公司,团队非常小,因此实施速度和干净的 API 是重要因素。还有成本。前两个选项是 DailyCred 和 LoginRadius。

DailyCred(我们最喜欢这个)

积极因素 - 简单易用的 API,每 50k 用户 25 美元(100 万用户 = 约 500 美元) 负面因素 - 他们是否还会继续营业存在疑问,但在他们的常见问题解答中,他们表示如果倒闭,他们将交出开源代码。

登录半径

积极因素 - 有点可用的 API,合理的定价(100 万用户 = ~ 1000 美元) 负面因素 - API 不如 DailyCred 干净

这里有一些其他可用的服务:

Parse - 定价模型模糊,还有传闻的超时问题 StormPath - 不确定他们的 API。也有点贵。 Gigya - Enterprise,对我来说太大了 JanRain - Enterprise,对我来说太大了 AuthRocket - 真的很贵 UserApp.io - 不再可用

Amazon Cognito 可以与您自己的经过身份验证的用户 ID 一起使用。在 DailyCred 中注册/登录/验证用户后。

希望对您有所帮助。

【讨论】:

【参考方案3】:

亚马逊最近宣布user pools 作为一个完全托管的身份验证提供商。

他们负责所有基本逻辑,例如用户注册、电子邮件验证、密码重置等。并且还提供了一些更高级的功能,例如多因素身份验证或电话号码验证。

很酷的是,这些用户池可以扩展到数亿用户,您只需像使用其他身份验证提供程序一样使用它们(或者您当然可以将它们组合起来)。查看this 了解如何设置它们。

【讨论】:

您链接的帖子显示了如何设置池,但没有显示如何实际处理注册、登录等。是否有任何资源显示如何执行此操作? 这是否意味着我们不需要拥有自己的数据库的提供者?我们可以使用 awas 吗?

以上是关于使用 Amazon Cognito 进行简单的用户注册的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Amazon Cognito 作为我的网站(非移动应用程序)的用户身份验证 [关闭]

如何在没有 Amplify 的情况下使用 Amazon Cognito

AWS Cognito 健康检查

使用 amazon cognito 域 UI(从用户池生成)登录后未获得 cognito 访问令牌?

是否可以使用iOS SDK更改Amazon Cognito中的用户名?

推荐邀请使用Amazon Cognito