【发布时间】:2018-11-07 17:03:18
【问题描述】:
问题
为什么 AWS Cognito 有两个地方可以联合身份提供商?我认为身份池应该与身份提供者联合,并且想知道为什么用户池也可以。请提出为什么有两个位置的原因。
Cognito 用户池也可以联合身份提供。
【问题讨论】:
-
你弄明白了吗?我也很好奇
标签: amazon-web-services aws-cognito
为什么 AWS Cognito 有两个地方可以联合身份提供商?我认为身份池应该与身份提供者联合,并且想知道为什么用户池也可以。请提出为什么有两个位置的原因。
Cognito 用户池也可以联合身份提供。
【问题讨论】:
标签: amazon-web-services aws-cognito
用户池
用户池用于身份验证(身份验证)。使用用户池,您的应用程序用户可以通过用户池(本质上是 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
【讨论】:
主要区别在于如何保存用户,以及在他们使用 用户池与身份池以 idp 登录后授予哪些权限。
因此,通过用户池进行联合(由他们自己)不处理 IAM 级别的权限,这不允许针对 AWS 服务提供更精细的权限集。
但是,身份池从具有唯一身份(例如 IAM 角色)的身份提供者创建用户,它们本质上允许您将 AWS 资源的授权委托给 AWS 本身。
请参考here 了解场景!!
类似的混淆来源是由于您可以直接将 Facebook 和 Google 等外部社交提供商与用户池集成,而根本不使用联合身份。使用这种方法,用户可以使用他们的 Facebook 登录名注册并登录您的应用程序,但他们永远不会被分配 IAM 角色。相反,用户池服务会自动将这些用户分配到 Facebook 群组,然后将他们 Facebook 个人资料的属性(例如姓名、电子邮件、位置)映射到您在用户池中定义的用户属性。同样,这里的关键区别不是身份提供者是内部的还是外部的,而是在身份验证后是否为用户分配了 IAM 角色。
希望对你有帮助。
【讨论】: