将用户从cognito用户池迁移到身份池

时间:2018-02-07 00:09:20

标签: javascript amazon-web-services amazon-cognito

AWS开发工具包(JavaScript)

我将所有用户从MSSQL数据库移植到AWS Cognito UserPool。 现在我需要在我的身份池中拥有每个Cognito用户。 这需要发生,因此我可以将用户数据移动到Cognito Sync的数据集中。

问题: 我无法将我的用户池中的每个认知用户移动到我的身份池。 我搜索了文档,似乎无法找到解决方法。

我无法记录每个用户,因为每个用户都需要重置自己的密码。 (这是由于从.csv文件移植用户时的方式)

解决

  • 我批量浏览用户。
  • 每个用户都转换为用户池中的 Cognito用户
  • 成功添加Cognito用户后,我会手动记录该用户,
  • 然后我必须使用临时密码设置用户密码
  • 接下来,我获得了名为
  • 的成功方法
  • 在成功方法中,我现在将用户置于身份池中,因为我手动记录了用户
  • 现在我获得了用户身份ID
  • 现在我可以设置DataSet
  • NEXT 重要我必须将用户设置回" RESET REQUIRED"
  • 然后循环继续,我处理批处理中的下一个用户

注意确保您在Userpool中没有检查任何MFA部分,否则将发送电子邮件。此外,在特殊情况下仍会发送电子邮件。为了解决这个问题,我执行了这项任务

  • 将用户的电子邮件更改为 fake@fake.com
  • 所有电子邮件都发送至fake@fake.com
  • 当您完成用户并且状态良好时,请将用户的电子邮件更改回正确的电子邮件。

1 个答案:

答案 0 :(得分:0)

首先,身份池没有用户 - 只有身份。在身份验证身份的情况下,每个身份对应于用户(用户池用户或Google / FB用户),并且具有IdentityId(针对所有身份 - 经过身份验证和未经身份验证)。当使用适当的IdP(在您的情况下为Userpool)中使用IdToken进行GetId API调用时,会生成此错误。

此外,我不明白为什么您需要为您的用户池中的所有用户生成身份。这些身份应该是即时生成的。设计&部署您的应用,当用户第一次使用您的应用时,您的应用将进行GetId调用,从而生成IdentityId。