AWS Cognito 用户池与身份池:IdentityPool 是强制性的吗?

AWS Cognito UserPool vs IdentityPool: Is IdentityPool mandatory?

使用 AWS Cognito 必须使用 IdentityPool 吗?

我的用例:

我的网络应用程序有可以自行注册的用户,这些用户将被添加到我设置的 Cognito 用户池中。我只想向经过身份验证的用户(即属于 authenticatedRole IAM 角色的用户)提供对我的后端资源的访问权限。我的要求很简单,单个经过身份验证的角色足以处理我的应用程序的资源授权要求,我只想拒绝未经身份验证的用户访问所有后端资源。

仅使用 UserPool 是否可行?如果可行,我该如何实现?

注意:我正在使用 CDK 将我的基础架构定义为代码。

对于 Cognito,使用身份池绝不是强制性的。它完全基于用例。这里有几点需要澄清。

用户池 - 用于身份验证 身份池 - 用于授权。

基本上,如果您希望最终用户注册、登录,然后访问 AWS 资源或进行 AWS API 调用,则必须使用身份池。假设您有一个游戏应用程序,最终用户可以通过 FB、Google 或本机(用户名和密码)登录。这是身份验证,在这里我们将使用 Cognito 用户池。现在用户已登录并开始玩游戏。他们得分很高。这个高分可能需要添加到 S3 或用户的 DynamoDB table 记录中。为此,使用了身份池。身份池将帮助您出售最终用户可以使用的临时 AWS 凭证。

我相信在您的用例中用户池应该足够了。您可以通过 verifying Cognito 为最终用户返回的访问令牌授予对资源的访问权限。