如果用户只能访问他或她的数据集,为什么IdentityId必须在此API调用(ref)上设置一个字段。无法从AWS凭证中推断出IdentityId吗?或者,如果他们不必匹配,那么技术上不会意味着任何恶意用户可以访问该数据集,如果他或她拥有原始用户的Cognito ID?或者对ListDatasets的调用是否会根据身份提供者的令牌重新验证Cognito ID?在这种情况下,我应该将我的网站缓存为cookie,以便用户不必每次都登录?
现在我正在缓存CognitoId,但我担心如果暴露出数据会受到攻击(或暴力攻击),并且如果它不是安全漏洞,那么我是否必须让用户重新使用 - 每次想要同步数据时,都要对其提供商进行身份验证?这里有什么解决方案?
任何帮助都将不胜感激。
编辑1 :
我认为我发现的是在Web浏览器中使用CognitoSync的缓存问题,而this question可能指向同一问题。以下是我期待的身份验证流程:
一段时间后:
问题:
结论:
答案 0 :(得分:0)
它也不是。 Cognito将根据为其创建AWS凭据的身份ID验证给定的身份ID。因此,对于您对欺骗的关注,仅仅通过了解其身份ID就不允许用户A获取用户B的同步数据。
答案 1 :(得分:0)
似乎有两个问题:
var nonce = createNonce();
setCookie('GoogleAuthNonce', nonce, 1);
var paramString = $.param({
response_type:'id_token',
scope: 'openid', //email, profile',
client_id: GOOGLE_CLIENT_ID,
nonce: nonce,
login_hint: 'service_email_address',
prompt: 'none',
redirect_uri: 'http://service.com'
});
window.location.href = `https://accounts.google.com/o/oauth2/v2/auth?${paramString}`;