首页 > 解决方案 > 将 cognitoIdentityId 用作公共 userId 是否安全?

问题描述

公开和使用 $ctx.identity.cognitoIdentityId 作为用户的公共 ID 是否安全?由于区域信息,暴露 cognitoIdentityId 感觉泄漏。

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

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

谢谢!

标签: amazon-web-servicesamazon-cognitoaws-appsync

解决方案


保证 Cognito 身份 id 在其存在的区域中是唯一的,但是在一种情况下它可能会改变:身份合并。

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

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

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


推荐阅读