您会意外地不可逆转地断开用户与 Cognito 身份池的连接吗?

Can you accidentally irreversibly disconnect a user with Cognito Identity Pools?

我正在研究使用 Amazon Cognito 身份池。

据我了解,从概念上讲,联合 ID 成为用户在您的应用程序中的唯一真实 ID。因此,无论你在哪里存储用户数据,你都应该将它与联合 ID 相关联。这就是为什么,如果您说的是与特定身份关联的 Facebook 和 Twitter 帐户,则用户可以使用这两个帐户登录并在应用程序中查看他们的数据。

我昨晚读到(现在我怎么也找不到,但它是官方文档),如果您删除身份池中某个身份的所有登录,那么该身份就会被孤立并且无法挽回。有道理...不再有与拥有它的实际人相关联的任何登录。

为了说明,这是您在 Javascript SDK 中设置登录的方式。

AWS.config.credentials = new AWS.CognitoIdentityCredentials({
      IdentityPoolId: 'IDENTITY_POOL_ID',
      Logins: {
        'graph.facebook.com': response.authResponse.accessToken,
        'other.provider':'other.provider.token',
        // etc
      }
    });

其中 Logins 对象可以设置许多不同的提供商以及 Facebook(Google、Twitter 等)。

一切都很好,但是如果在您可能使用身份池的许多不同应用程序之一中引入了一个错误,其中登录数组以某种方式设法为空并提交,会发生什么情况通过 AWS Identity 服务器。

这是否意味着您用来构建用户对您的应用的完整体验(例如他们的用户个人资料、帐户数据,可能包括敏感数据在内的所有内容)的身份将不可逆转地断开连接?

我希望我在这里想象一个不可能的最坏情况。谁能解除我的顾虑?

如果 "Logins" 映射在 AWS.CognitoIdentityCredentials() 的调用中被删除(不存在),那么将发生的只是来自身份提供者的凭据将无法通过身份验证。您在 Cognito 中的身份池配置不会发生任何变化。一旦问题得到纠正,用户需要做的就是重新登录。将登录映射视为对您正在使用哪个身份提供者的 Cognito 的提示,而不是更改 Cognito 配置的方向。