是什么阻止了 unauthenticated/guest 身份数量的失控?

What stops the number of unauthenticated/guest identities spiralling out of control?

每次 "guest"(未经身份验证的)用户与 Cognito 一起使用时,都会创建一个新的 身份 。这些很快就会堆积起来,而我仅通过自己的实验就拥有了 100 多个。

示例代码:

// We're not providing specific login details from an IDP,
// so will be granted access as a guest user
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
    IdentityPoolId: identityPoolId
});

// Make the actual REST API call to get guest user credentials.
AWS.config.credentials.get(function(err){
    if (err) {
        //...
    }
    else {
        //...
    }
});

抱歉,如果这听起来含糊不清,我仍在掌握 Cognito。

我建议,使用你的aws lambda或sme服务生成一个UUID或GUID发送给被邀请人,作为邀请码,你可以把cognito API协商码放在API后面网关,与 api 的第一次交互是验证邀请码是否有效(您生成它并将其缓存在 dynamo 数据库或某些持久性存储中)。并创建认知 ID 并将其与临时凭证一起发送给用户,您公开的 API 网关 api 的其余部分将需要您在验证后发送的身份验证、ID、秘密和会话第一次邀请。

有没有我没发现的空闲时间设置,让它们自动deleted/removed/purged? Cognito 不会自动为您清除 ID。

我应该用 cron 作业或类似的方式删除它们吗? 您可以删除身份,Cognito 确实公开了一个 API 来这样做,但 Cognito 联合身份是免费使用的。如果您随身携带它们,您将不会被收取任何费用。

我应该使用一个在所有客人之间共享的单一客人身份吗?[=​​22=] 如果您不使用身份 ID 在某处键入数据或范围访问(例如 Dynamo 中的键、S3 中的前缀等),您可以共享来宾 ID,但我们不建议这样做。具体取决于您的用例,但推荐的方法是为每个用户保留一个 ID,以允许限定凭据范围、使用情况跟踪等。

关于处理来宾用户身份的最佳做法,有什么我应该知道的吗? 如果您将身份验证提供程序添加到您的池中,并且未经身份验证的 id 登录,则该未经身份验证的 id 将消失并成为经过身份验证的 id。不过,它们同样可以免费使用。如果您正在快速测试并且只想让新数据可见,API 删除身份是一种可行的方法。