为什么AWS Cognito有两个联合身份提供商的地方?我认为Identity Pool应该与身份提供者联合,并想知道为什么User Pool也可以。请提出为什么有两个地点的原因。
Cognito Identity Pool可以联合身份提供者。
Cognito用户池也可以联合身份提供。
答案 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