身份提供商的AWS Cognito最佳实践

时间:2018-10-25 21:26:46

标签: amazon-cognito amazon-iam aws-userpools

我有一个正在运行的应用程序,用户可以在其中通过表格或Facebook进行注册。

我正在尝试执行以下操作,我想知道这是否符合AWS Cognito最佳实践。

注册:

  • 注册表格(“本地用户”):用户可以输入用户名/密码以及详细信息(性别,生日等)。凭证将存储在AWS Cognito用户池中,而所有其他配置文件详细信息将存储在自定义数据库中。
  • 通过Facebook注册:用户可以单击页面上的Facebook登录按钮,并且在通过身份验证后,如果FB没有提供,则必须填写缺少的信息(性别,生日等)。个人资料信息将存储在与用户通过表单进行注册相同的数据库中。

游泳池:

  • AWS用户池作为身份提供者连接到我的AWS身份池中。
  • Facebook已连接到同一身份池。

令牌处理:

  • “本地用户”:我基于用户池中的identityId从身份池中获取凭据。我使用此凭证来访问AWS上的资源。凭据将被缓存在客户端的安全位置。
  • Facebook用户:与“本地用户”相同的步骤。

我的问题:

  • 总体方法是否有意义,还是有些东西与AWS Cognito的设计不符?
  • 我将所有个人资料信息(“本地用户”和Facebook用户)保存在自己的数据库中,因为我需要有关个人资料信息的更高级的查询/搜索功能。 Cognito不提供复杂的搜索功能。如果我与用户池分别分开,这是一个不好的做法吗?用户池仅存储本地用户的用户名/密码?这种方法的缺点是什么?
  • 我应该在用户池中为每个Facebook身份创建一个用户吗?如果是,为什么?

1 个答案:

答案 0 :(得分:0)

您可以使用javascript sdk来做所有尝试做的事情。 检查此链接,它显示了如何完成您需要的几乎所有事情。 https://docs.aws.amazon.com/cognito/latest/developerguide/using-amazon-cognito-user-identity-pools-javascript-examples.html