【问题标题】:AWS Cognito UserPool vs IdentityPool: Is IdentityPool mandatory?AWS Cognito 用户池与身份池:身份池是强制性的吗?
【发布时间】:2021-06-08 01:21:22
【问题描述】:
AWS Cognito 是否强制使用 IdentityPool?
我的用例:
我的网络应用有可以自行注册的用户,这些用户将被添加到我设置的 Cognito 用户池中。我只想向经过身份验证的用户(即,属于 authenticatedRole IAM 角色的用户)提供对我的后端资源的访问权限。我的要求很简单,一个经过身份验证的角色就足以处理我的应用程序的资源授权要求,我只想拒绝未经身份验证的用户访问所有后端资源。
仅使用 UserPool 是否可行,如果可以,我该如何实现?
注意:我使用 CDK 将我的基础架构定义为代码。
【问题讨论】:
标签:
amazon-web-services
amazon-cognito
【解决方案1】:
对于 Cognito,使用身份池绝不是强制性的。它完全基于用例。这里有几点需要澄清。
用户池 - 用于身份验证
身份池 - 用于授权。
基本上,如果您希望最终用户注册、登录,然后访问 AWS 资源或进行 AWS API 调用,那么您必须使用身份池。因此,假设您有一个游戏应用程序,最终用户可以通过 FB、Google 或本机(用户名和密码)登录。这是身份验证,在这里我们将使用 Cognito 用户池。现在用户已登录并正在玩游戏。他们得分很高。可能需要将此高分添加到 S3 或用户的 DynamoDB 表记录中。为此,使用了身份池。身份池将帮助您出售最终用户可以使用的临时 AWS 凭证。
我相信在您的用例中,用户池应该足够了。您可以通过 verifying Cognito 为最终用户返回的访问令牌授予对资源的访问权限。