我正在考虑使用Amazon Cognito Identity Pools。
根据我的理解,概念上联合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 Server。
这是否意味着您将用于构建用户对您的应用程序的整个体验(例如他们的用户个人资料,帐户数据,可能包括敏感数据在内的所有内容)的此身份将被不可逆转地断开连接?
我希望我能在这里梦想一个不可能的最坏情况。任何人都可以减轻我的顾虑吗?
答案 0 :(得分:1)
如果"登录"在对AWS.CognitoIdentityCredentials()的调用中删除(不存在)映射,然后所有发生的情况是来自身份提供程序的凭据将无法进行身份验证。 Cognito中的标识池配置不会发生任何变化。一旦问题得到纠正,用户需要做的就是再次登录。将Logins映射视为Cognito上您正在使用的Identity Provider的提示,而不是更改Cognito配置的方向。