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

时间:2018-05-29 06:24:36

标签: amazon-web-services aws-cognito

问题

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

Cognito Identity Pool可以联合身份提供者。 enter image description here

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

enter image description here

2 个答案:

答案 0 :(得分:1)

主要区别在于,用户使用用户池vs身份池使用idp登录后,如何保存用户以及授予哪些权限。

因此,通过用户池进行的联合身份验证(本身)不会处理IAM级别的权限,就AWS服务而言,这不允许更精细的权限集。

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

请参考here以了解情况!

  

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

希望有帮助。

答案 1 :(得分: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