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

Posted

技术标签:

【中文标题】将用户从 cognito 用户池迁移到身份池【英文标题】:Migrating users from cognito userpool to identity pool 【发布时间】:2018-07-17 03:54:30 【问题描述】:

AWS 开发工具包 (javascript)

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

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

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

已解决

我批量循环访问用户。 每个用户都转换为用户池中的 Cognito 用户 成功添加 Cognito 用户后,我会手动登录该用户, 然后我必须用临时密码设置用户密码 接下来我得到了成功的方法,叫做 在成功方法中,我现在在身份池中有用户,因为我手动登录了用户 现在我得到了用户的身份 ID 现在我可以设置数据集了 NEXT 重要我必须将用户设置回“RESET REQUIRED” 然后循环继续,我处理批处理中的下一个用户

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

将用户电子邮件更改为 fake@fake.com 所有邮件均发送至 fake@fake.com 当您处理完用户并且一切正常后,将用户电子邮件改回正确的电子邮件。

【问题讨论】:

【参考方案1】:

首先,身份池没有用户——只有身份。如果是经过身份验证的身份,每个身份都对应一个用户(用户池用户或 Google/FB 用户),并具有一个 IdentityId(对于所有身份 - 已验证和未验证)。这是在使用来自适当 IdP(在您的情况下为 Userpool)的 IdToken 进行 GetId API 调用时生成的。

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

【讨论】:

我有需要移植的用户数据。用户数据将添加到 CognitoSync 中的身份的 dataSet。因此,我必须将用户添加到身份。

以上是关于将用户从 cognito 用户池迁移到身份池的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Cognito 身份池提供的身份凭证访问用户数据?

如何通过经过身份验证的 cognito 用户(用户池)快速访问 DynamoDB

是否可以在没有 Cognito 用户池的情况下使用 AWS Amplify Analytics?

从 Cognito 组担任 IAM 角色

Cognito:联合身份 ID 和用户属性

AWS Cognito 用户池 + 用于身份验证/登录的社交提供商