如何将应用程序数据与 Cognito 用户池 + Cognito 身份池用户合并?
How to join application data with Cognito User Pool + Cognito Identity Pool users?
如果我有一个 Cognito 用户池和一个 Cognito 身份池,并且我有特定于应用程序的数据,在如何将它们结合在一起方面是否有任何最佳实践?
例如,假设我将应用程序数据存储在 DynamoDB 中,可能 SMS/text 用户发送的消息。还假设一条文本消息(存储在数据库中)如下所示:
{
"account_id": "a-uuid-for-the-account",
"message_body": "Hello world",
"message_subject": "Greetings!",
"date_sent": "...",
"message_id": "..."
}
然后我会将其加入用户池还是身份池?例如,一个单独的帐户 table 可能有类似这样的记录:
{
"account_id": "a-uuid-for-the-account",
"user_pool_username": "MrBloggs"
"addresses": [ "123 Springfield Road", "Blahsville" ]
}
我可以看到加入用户池的缺点,因为您可能会引入其他 IDP,这将失败。因此,也许您会使用身份池的 ID 'identity'?
最后,这个问题让我想知道 'attributes' 您可能针对用户池用户(在用户池本身中)存储的意义何在?以上面使用的邮政地址为例,如果它存储在用户池中,那么您必须单独存储其他 IDP 中用户的地址——重复工作并使软件复杂化。
谢谢!
一种选择是使用 Cognito 用户池作为您的 Cognito 身份池的提供者,然后它将为您提供访问 Dynamo 的凭据。
如果您使用多个提供者,最有意义的方法可能是使用 Cognito 身份池生成的 ID(身份 ID)作为 Dynamo 中的密钥,因为用户可能只能使用某些身份登录public 提供商,而不是用户池。
一旦链接了登录名,此身份 ID 将保持不变,但有一个例外。如果两个经过身份验证的身份合并到一个身份池中,则生成的身份 ID 可能是其中之一。由于 Dynamo 的工作方式如此,这意味着您必须捕获合并事件,然后从 Dynamo 中获取旧密钥存在的所有条目,删除它们,然后使用新密钥重新插入它们。诚然,这不是最顺利的场景,我们将把它作为一个功能请求,让这个用例更容易一些。
针对用户存储数据并不是真正为 Cognito 联合身份(身份池)而设计的,只有用户池。当用户池更像是一个独立的实体而不是您描述的用例时,这确实最有意义。
如果我有一个 Cognito 用户池和一个 Cognito 身份池,并且我有特定于应用程序的数据,在如何将它们结合在一起方面是否有任何最佳实践?
例如,假设我将应用程序数据存储在 DynamoDB 中,可能 SMS/text 用户发送的消息。还假设一条文本消息(存储在数据库中)如下所示:
{
"account_id": "a-uuid-for-the-account",
"message_body": "Hello world",
"message_subject": "Greetings!",
"date_sent": "...",
"message_id": "..."
}
然后我会将其加入用户池还是身份池?例如,一个单独的帐户 table 可能有类似这样的记录:
{
"account_id": "a-uuid-for-the-account",
"user_pool_username": "MrBloggs"
"addresses": [ "123 Springfield Road", "Blahsville" ]
}
我可以看到加入用户池的缺点,因为您可能会引入其他 IDP,这将失败。因此,也许您会使用身份池的 ID 'identity'?
最后,这个问题让我想知道 'attributes' 您可能针对用户池用户(在用户池本身中)存储的意义何在?以上面使用的邮政地址为例,如果它存储在用户池中,那么您必须单独存储其他 IDP 中用户的地址——重复工作并使软件复杂化。
谢谢!
一种选择是使用 Cognito 用户池作为您的 Cognito 身份池的提供者,然后它将为您提供访问 Dynamo 的凭据。
如果您使用多个提供者,最有意义的方法可能是使用 Cognito 身份池生成的 ID(身份 ID)作为 Dynamo 中的密钥,因为用户可能只能使用某些身份登录public 提供商,而不是用户池。
一旦链接了登录名,此身份 ID 将保持不变,但有一个例外。如果两个经过身份验证的身份合并到一个身份池中,则生成的身份 ID 可能是其中之一。由于 Dynamo 的工作方式如此,这意味着您必须捕获合并事件,然后从 Dynamo 中获取旧密钥存在的所有条目,删除它们,然后使用新密钥重新插入它们。诚然,这不是最顺利的场景,我们将把它作为一个功能请求,让这个用例更容易一些。
针对用户存储数据并不是真正为 Cognito 联合身份(身份池)而设计的,只有用户池。当用户池更像是一个独立的实体而不是您描述的用例时,这确实最有意义。