【问题标题】:AWS Cognito - User Pool Federation vs Identity Pool FederationAWS Cognito - 用户池联合与身份池联合
【发布时间】:2018-11-07 17:03:18
【问题描述】:

问题

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

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

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

【问题讨论】:

  • 你弄明白了吗?我也很好奇

标签: amazon-web-services aws-cognito


【解决方案1】:

用户池

用户池用于身份验证(身份验证)。使用用户池,您的应用程序用户可以通过用户池(本质上是 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 登录后授予哪些权限。

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

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

    请参考here 了解场景!!

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

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 2018-02-11
      • 2017-02-28
      • 2018-04-05
      • 2018-10-08
      • 2018-08-23
      • 2016-12-29
      • 2016-10-17
      • 2019-08-15
      • 1970-01-01
      相关资源
      最近更新 更多