AWS 26 Cognito



--------------------------------------------------------------------------------------------------

Amazon Cognito

?我们希望给我们的用户一个身份,这样他们就可以与我们的应用交互

?Cognito用户池:
?应用程序用户的登录功能
?与API网关和应用程序负载平衡器集成
?Cognito身份池(联邦身份):
?向用户提供AWS凭据,以便他们可以直接访问AWS资源
?作为身份提供者与Cognito用户池集成

?Cognito同步:
?将数据从设备同步到Cognito。
?已弃用并被AppSync取代

?Cognito vs IAM:“数百名用户”、“移动用户”、“通过SAML认证”


Cognito用户池(CUP)——用户功能
?为你的web和移动应用创建一个无服务器的用户数据库
?简单登录:用户名(或电子邮件)/密码组合
?密码重置
?电子邮件和电话号码验证
?多因素认证(MFA)
?联合身份:来自Facebook、谷歌、SAML的用户…
?功能:如果用户的凭据在其他地方被泄露,则阻止用户
?登录发送回JSON Web令牌(JWT) JSON Web Token (JWT)

Cognito用户池(CUP)-集成
?CUP与API网关和应用程序负载平衡器集成

Cognito User Pools – Lambda Triggers
Cognito用户池–Lambda触发器
?CUP可以在这些触发器上同步调用Lambda函数:

Cognito用户池——托管身份验证UI hosted authentication UI
?Cognito有一个托管身份验证UI,您可以将其添加到应用程序中,以处理注册和登录工作流
?使用托管UI,您有与社交登录、OIDC或SAML集成的基础
?可以定制定制徽标和定制CSS


Cognito身份池(联邦身份)
?获取“用户”的身份,以便他们获得临时AWS凭据
?您的身份库(例如身份来源)可以包括:
?公共提供商(登录亚马逊、Facebook、谷歌、苹果)
?亚马逊Cognito用户池中的用户
?OpenID连接提供程序和SAML身份提供程序
?开发人员身份验证(自定义登录服务器)
?Cognito身份池允许未经验证的(访客)访问
?然后用户可以直接或通过API网关访问AWS服务
?应用于凭证的IAM策略在Cognito中定义
?它们可以根据用户id进行定制,以便进行细粒度控制

Cognito身份池——IAM角色
?认证用户和来宾用户的默认IAM角色
?定义规则,根据用户ID为每个用户选择角色
?您可以使用策略变量划分用户的访问权限

?IAM证书由Cognito身份池通过STS获得
?角色必须有Cognito身份池的“信任”策略


Cognito用户池与身份池
?Cognito用户池:
?web和移动应用程序的用户数据库
?允许通过公共社交、OIDC、SAML等方式联合登录…
?可以自定义托管用户界面以进行身份验证(包括徽标)]
?在身份验证流程中使用AWS Lambda触发

?Cognito身份池:
?为用户获取AWS凭据
?用户可以通过公共社交、OIDC、SAML和Cognito用户池登录
?用户可以未经身份验证(访客)
?用户被映射到IAM角色和策略,可以利用策略变量
?CUP+CIP=管理用户/密码+访问AWS服务

Cognito Sync
?已弃用–立即使用AWS AppSync
?商店偏好、配置、应用程序状态
?跨设备同步(任何平台——iOS、Android等)
?离线功能(恢复在线时同步)
?将数据存储在数据集中(高达1MB),最多可同步20个数据集
?推送同步:身份数据更改时,在所有设备上以静默方式通知
?Cognito流:将数据从Cognito流到Kinesis
?Cognito事件:执行Lambda函数以响应事件

-------------------------------------------------------------------------------------