pka*_*mol 8 amazon-web-services amazon-cognito aws-sts
在关于 Cognito的官方 AWS文档中,在用例大纲中声明:
1.在第一步中,您的应用程序用户通过用户池登录并在成功验证后接收用户池令牌。
2.接下来,您的应用程序通过身份池将用户池令牌交换为 AWS 凭证。
3.最后,您的应用程序用户可以使用这些 AWS 凭证访问其他 AWS 服务,例如 Amazon S3 或 DynamoDB。
通过STS实现的令牌分配“AWS 凭证”的目标不是吗?
Cognito 和 STS 在授予非 AWS 用户访问 AWS 服务(例如 S3 或 EC2)的权限方面究竟有什么不同?
同一文档来源还指出 Cognito 也适用于 AWS 和第三方身份提供商(例如社交 - 例如 Facebook - 或 AD 公司)之间的身份联合。
这不是也通过 SAML 联合实现的(即首先让 AWS 和 IdP 建立基于 SAML 的信任关系?)
Cognito 用户池和身份池是比 SAML 和 STS 更高级别的抽象。让我们从定义什么是 SAML 和 STS 开始:
SAML通过提供一种方式对用户进行一次身份验证,然后将该身份验证传递给多个应用程序,从而使单点登录 (SSO) 技术成为可能。
STS是一项 Web 服务,可让您为 AWS Identity and Access Management (IAM) 用户或您进行身份验证的用户请求临时的、有限权限的凭证
基本上,SAML 是一种将一个应用程序生成的身份验证令牌传输到另一个应用程序的方法,而 STS 是一种从 AWS 获取授权令牌(即 AWS 凭证)的方法。
现在,另一方面,我们有 Cognito 用户和身份池:
用户池提供身份验证,如 SAML,但它们也提供用户数据库。SAML 不会这样做,因此如果您想保留用户数据、添加数据、更改数据等,您需要自己完成。SAML 允许您做的就是将这些用户的身份验证转移到另一方。但是,您必须编写所有代码才能进行身份验证。
用户池本身可以使用 SAML 身份验证提供程序,或执行自己的内置身份验证。但在任何一种情况下,您最终都会得到一个存在于 Cognito 中的用户实体并具有与之关联的数据。
身份池提供授权,即决定允许(通常经过身份验证,但不总是)用户做什么。他们确实在后台使用 STS 来获取启用特定操作的令牌,但身份池会根据用户特征选择是否授予凭据以及授予哪些凭据。身份池依赖于身份验证提供者来确定用户是谁;此提供程序也可以是用户池或 SAML 提供程序。身份池将根据提供者自动检查给定的身份验证令牌是否有效,以及它们是否允许用户获得某些授权令牌。
总之,Cognito 用户池和 Cognito 身份池封装了您通常需要自己编写的功能,以便从 SAML 提供程序到用户数据库,再到用户到权限的映射,以便能够检索这些权限的 AWS 凭证。无需向 SAML 提供商(或实施您自己的身份验证)进行身份验证调用、实施用户数据库,然后为用户的权限生成 AWS 凭证,它们允许您配置用户池以使用给定的提供商(或 Cognito 自己的身份验证) ),将身份池指向用户池,并告诉身份池用户池成员应具有哪些权限。其余所有工作都在后台为您完成。
| 归档时间: |
|
| 查看次数: |
1970 次 |
| 最近记录: |