Amazon Cognito 为客户的 Web 和移动应用程序提供身份验证、授权和用户管理。用户可以直接使用用户名和密码登录,或通过第三方(如 Facebook、Amazon、Google、Apple)或通过 SAML 2.0 和 OpenID Connect 的企业身份提供商登录。
Amazon Cognito 的两个主要组件是 用户池 和 身份池。用户池 是为应用程序用户提供注册和登录选项的用户目录。身份池 使开发人员能够授予用户访问其他 AWS 服务的权限。
用户池
身份池
用户通过 用户池 登录,成功身份验证后接收用户池令牌(JWT 令牌)
应用程序通过 身份池 将用户池令牌交换为 AWS 凭证
用户可以使用 AWS 凭证访问其他 AWS 服务,如 Amazon S3 或 DynamoDB
身份池 ID 允许您获取可能具有额外 AWS 权限的临时 AWS 凭证。因此,可能会获得对敏感 AWS 服务的未认证访问。
身份池 ID 可以存储在客户端,例如在 JavaScript 中,或者在响应中返回。
参考资料:
Appsecco 博客:利用 Amazon Cognito 中的弱配置arrow-up-right
技术分析:攻击 AWS Cognito 错误配置arrow-up-right
如果应用程序允许写入内部使用的 AWS 用户池的用户属性,它可以被用来滥用应用程序和池之间的信任关系。换句话说,可以更改属性并颁发应用程序将使用的 JWT 令牌。例如,如果应用程序使用标准化的电子邮件(小写),您可以将电子邮件地址中的一个字母更改为等效的大写字母并接管账户。
技术分析:Flickr 账户接管arrow-up-right
白皮书:AWS Cognito 安全的互联网规模分析arrow-up-right
最后更新于4个月前