将 cognitoIdentityId 用作 public userId 是否安全?

Is it safe to use cognitoIdentityId as a public userId?

公开和使用 $ctx.identity.cognitoIdentityId 作为用户的 public ID 是否安全?由于区域信息,公开 cognitoIdentityId 感觉很不方便。

我使用 AWS Identity and Access Management (IAM) 作为我的授权类型。

我不确定这是否相关,但我的身份池确实允许未经身份验证的身份。

谢谢!

Cognito 身份 ID 保证在其所在区域是唯一的,但在一种情况下它可能会发生变化:身份合并。

假设您已登录 Facebook 以在 phone 上使用您的应用,但在您的平板电脑上使用 Cognito 用户池。如果您想在某个时候 link 这些帐户,则需要使用两个登录令牌登录一次,之后提供其中一个令牌就足够了。但是,在这次单次登录期间,将启动身份合并。此合并的结果将是一个禁用的身份 ID 和一个拥有两个令牌的活动 ID。 Cognito 完全随机地处理这个过程——它可能是被禁用的。

这完全有可能不适用于您的应用程序,但如果您有多个已配置的提供程序,则需要考虑这一点。您必须拦截这些类型的事件并相应地更新您的数据存储。

就泄露 id 本身而言,这是一个值得关注的问题。除了使用非 AWS 开发人员无法理解的区域前缀看起来很有趣之外,它还可能存在一些安全风险(取决于您对该类型用户的 linked 权限)。我可能会推荐一些散列或编码来混淆它。