AWS Cognito - 用户池联合与身份池联合

mon*_*mon 6 amazon-web-services aws-cognito

为什么 AWS Cognito 有两个地方可以联合身份提供商?我认为身份池应该与身份提供者联合,并想知道为什么用户池也可以。请提出有两个位置的原因。

Cognito 身份池可以联合身份提供者。 在此处输入图片说明

Cognito 用户池也可以联合身份提供者。

在此处输入图片说明

Jor*_*cia 5

用户池

用户池用于身份验证(身份验证)。使用用户池,您的应用程序用户可以通过用户池(本质上是 Amazon Cognito 中的用户目录)登录或通过第三方身份提供商 (IdP) 进行联合,例如 Google、Facebook、Amazon 等社交身份提供商或 Apple,并通过 SAML 身份提供商。

成功验证用户身份后,Amazon Cognito 会发布 JSON Web 令牌 (JWT),您可以使用它来保护和授权对您自己的 API 的访问,或交换 AWS 凭证(身份池在这里发挥作用)。

需要时使用用户池:

  • 为您的应用设计注册和登录网页。
  • 访问和管理用户数据。
  • 跟踪用户设备、位置和IP地址,适应不同风险级别的登录请求。
  • 为您的应用程序使用自定义身份验证流程。

身份池

身份池用于授权(访问控制)。使用身份池,您可以获得临时的、有限权限的 AWS 凭证以访问其他 AWS 服务。

需要时使用身份池:

  • 授予您的用户访问 AWS 资源的权限,例如 Amazon Simple Storage Service (Amazon S3) 存储桶或 Amazon DynamoDB 表。
  • 为未经身份验证的用户生成临时 AWS 凭证(用户池支持匿名访客用户)。

身份池提供 AWS 凭证以授予您的用户访问其他 AWS 服务的权限。要使您的用户池中的用户能够访问 AWS 资源,您可以配置身份池以将用户池令牌交换为 AWS 凭证

资料来源:

https://aws.amazon.com/premiumsupport/knowledge-center/cognito-user-pools-identity-pools/

https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools.html

https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-identity.html


小智 2

主要区别在于用户的保存方式以及使用用户池与身份池通过 idp 登录后会授予哪些权限。

\n

因此,通过用户池的联合(单独)不处理 IAM 级别的权限,这不允许针对 AWS 服务提供更精细的权限集。

\n

然而,身份池从具有唯一身份(例如 IAM 角色)的身份提供商创建用户,它们本质上允许您将 AWS 资源的授权委托给 AWS 本身。

\n

请参考这里的场景!

\n
\n

类似的混乱来源是由于您可以直接将 Facebook 和 Google 等外部社交提供商与用户池集成,而根本不使用联合身份。使用这种方法,用户可以使用 Facebook 登录信息注册并登录您的应用程序,但他们永远不会被分配 IAM 角色。相反,用户池服务会自动将这些用户分配到 Facebook 群组,然后将其 Facebook 个人资料的属性(例如姓名、电子邮件、位置)映射到您在用户池中定义的用户属性。同样,这里的关键区别不在于身份提供商是内部还是外部,而是身份验证后是否将 IAM 角色分配给用户。

\n
\n

希望能帮助到你。

\n