Cognito身份ID持久性

时间:2019-08-09 07:19:31

标签: amazon-cognito

我有一个Cognito身份池,其中一个Cognito用户池作为身份验证提供程序。

身份池接受经过身份验证和未经身份验证的身份。

假设使用此设置的网络应用程序:

  • 当未经身份验证的用户加载应用程序时,将发布未经身份验证的身份ID(假设:'UNAUTH_ID')

  • 当用户使用电子邮件/密码进行身份验证时,将发出经过身份验证的身份ID(让我们假设为“ AUTH_ID”)并与此用户相关联。

我想使用此AUTH_ID作为密钥来创建数据库条目,但需要确定的是,对于给定的用户,此“ AUTH_ID”永远不会更改。

例如,如果同一用户使用另一台设备,我假设将首先发出“ UNAUTH_ID_2”,然后一旦用户成功登录,便会在第二台设备上检索并使用相同的“ AUTH_ID”。我还假定不存在对“ AUTH_ID”或任何其他机制的时基弃用,该机制将为给定的经过身份验证的用户重新生成新的身份ID。

我猜答案是肯定的,但是我找不到任何明确证实这一点的官方文件。

如果有人可以确认这一点和/或将我发送给相关的官方文档,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

是的,您猜对了。对于身份验证身份,您的用户将具有一个唯一的sub ID,该ID不会更改。您可以将此子ID用作IAM策略中的变量,以向用户提供fine grained access。这意味着您可以创建一个s3存储桶(甚至dynamodb表),并使用唯一的子ID作为包含所有用户文件的文件夹名称。现在,只有用户可以访问s3上的该文件夹。

请注意,子ID在身份池中。用户池中还有另一个子ID,该子ID是不同的,不能在策略语句中使用。

您可以看到here来确认sub(UUID)是全局唯一的。