Amazon Cognito 功能

什么是 Amazon Cognito?

Amazon Cognito 是一项以开发人员为中心且经济高效的客户身份和访问管理(CIAM)服务。它提供了可将用户规模扩展到数以百万计的安全身份存储和联合身份验证选项。Amazon Cognito 支持使用社交身份提供商和基于 SAML 或 OIDC 的身份提供商登录,以提供令人愉悦的客户体验,并提供高级安全功能来保护您的客户和业务。它支持各种合规标准,在开放身份标准(OAuth2.0、SAML 2.0 和 OpenID Connect)上运行,并与前端和后端开发资源和 SDK 库的扩展生态系统集成。

身份管理

客户对您网站的第一次体验通常来自自助注册流程。Amazon Cognito 提供可定制、预打包的托管用户界面以快速进入市场,并提供一组强大的 API 来构建完全自定义的自助注册解决方案。用户可以使用您的应用程序的电子邮件、电话号码或用户名进行注册。自助注册流程使用户能够查看和更新他们的个人资料数据,包括自定义属性。使用自助服务选项减少帮助中心的呼叫数量,例如通过 SMS 消息或电子邮件重置密码。

Amazon Cognito 提供一个可将用户规模扩展到数以百万计的安全身份存储(用户池)。对于直接注册的用户和使用外部身份提供者登录的联合用户,用户池可以安全地存储用户个人资料数据。
Amazon Cognito 身份存储是基于 API 的用户存储库。存储库和 API 支持每个用户最多存储 50 个自定义属性,支持不同的数据类型,并强制执行长度和可变性约束。选择用户在完成注册过程之前必须提供的所需属性

用户可以使用批量导入或即时(JIT)迁移迁移到 Amazon Cognito。利用 CSV 文件导入流程实现批量用户迁移。使用 JIT 迁移流程时,AWS Lambda 触发器会将迁移流程集成到登录工作流中,并且可以保留用户的密码。

Amazon Cognito 通过多租户支持实现 B2B 交互。可以选择重用应用程序集成、访问和密码策略,或者强制实施完全的租户隔离。

用户身份验证

Amazon Cognito 提供了一个内置且可自定义的 UI,让用户注册和登录。您可以使用 Amazon Cognito 的 Android、iOS 和 JavaScript SDK 为应用程序添加用户注册和登录页面。

可以通过在 Amazon Cognito 用户群体中启用 MFA 来为客户增加额外的安全层。用户可以使用 SMS 或基于时间的一次性密码 (TOTP) 生成程序验证其身份,如 Google Authenticator。Amazon Cognito 还支持在不同的用户池上配置不同的密码规则。

作为一个联合身份验证中心,Amazon Cognito 使用户能够通过社交身份提供商(例如 Apple、Facebook、Google 和 Amazon)以及通过 SAML 和 OIDC 的企业身份提供商登录。Amazon Cognito 是一个基于标准的身份提供商。一旦用户登录到 Amazon Cognito(通过本地身份验证或外部联合身份验证),他们就可以使用 OAuth/OIDC 访问联合资源。

Amazon Cognito 用户群体允许您构建自定义身份验证流程,该流程使用 Lambda 函数根据一个或多个质询-响应周期对用户进行身份验证。您可以使用此流程实施基于自定义挑战的无密码身份验证,也可以使用自定义挑战作为附加因素。

使用 lambda 触发器自定义 Cognito 行为,包括用户生命周期阶段,例如身份验证和注册之前和之后或令牌签发之前。您还可以使用 lambda 触发器自定义在不同阶段发送给用户的消息,或者与第三方电子邮件和短信提供商集成。

访问控制

Amazon Cognito 可确保与应用程序的最终集成。Amazon 应用程序负载均衡器(ALB)和 Amazon API Gateway 具有内置的策略执行点,可提供基于 Amazon Cognito 令牌和范围的访问。

Amazon Cognito 的凭证代理(也称为 Amazon Cognito 身份池)提供对 AWS 资源的单点登录访问,例如 Amazon DynamoDB、Amazon S3 存储桶、Lambda 无服务器组件和其他 Amazon 服务。用户可以动态映射到不同的角色,以支持对服务的最低权限访问。

Amazon Cognito 使用 OAuth 客户端凭证流提供机器对机器身份验证,确保应用程序组件之间的安全体验。

使用自定义属性,以符合 OAuth 2.0 范围和声明的形式,丰富访问令牌。您可以使用访问令牌中的自定义属性做出特定于应用程序的高级授权决策。此功能还允许您个性化最终用户体验并提高客户参与度。 

客户体验

使用数据驱动的方法来推动客户获取和保留。启动客户外联活动并跟踪与 Amazon Pinpoint 的互动。Amazon Pinpoint 为基于 Amazon Cognito 的用户活动提供分析,而 Amazon Cognito 则丰富了 Pinpoint 活动的用户数据。

AWS Amplify 是一组专门构建的工具和功能,使前端 Web 和移动开发人员可以快速、轻松地在 AWS 上构建全堆栈应用程序,随着使用案例的发展,可以灵活地利用广泛的 AWS 服务。借助 Amplify,您可以使用 Amazon Cognito 配置 Web 或移动应用程序后端,并在几分钟内连接您的应用程序,直观地构建 Web 前端 UI,并在 AWS 管理控制台之外轻松管理应用程序内容。无需云专业知识,就可更快发布和扩展。

CIAM 解决方案是自定义解决方案。Amazon Cognito 提供了一组强大的钩子和扩展程序,以完全自定义身份验证、注册和用户迁移流程。例如,可以通过自定义身份证明和账户验证检查来增强自助注册流程,并且可以扩展登录流程以创建自定义身份验证流程或在生成令牌之前对其进行修改。

Amazon Cognito 开发工具包可使用 Java、C++、PHP、Python、Golang、Ruby、.NET 和 JavaScript。

高级安全功能

通过与 Amazon Web Application Firewall (AWS WAF) 的本地集成,Amazon Cognito 提供了先进的机器人检测功能,可为您的组织省去自动化的费用。

Amazon Cognito 可以实时检测和防止在用户注册、登录或更改密码时重复使用受损凭证。Amazon Cognito 检测到用户输入了已在其他地方遭泄露的凭据时,会提示他们更改密码。

通过自适应身份验证保护您的用户账户并增强他们的登录体验。当 Amazon Cognito 检测到异常的登录活动,例如有人尝试在新位置和新设备登录时,则会为该活动分配一个风险分数,让您选择是提示用户进行额外验证还是拦截登录请求。

审计与合规性

Amazon Cognito 可满足多种安全性与合规性要求,包括医疗保健公司和企业等受高度管制的组织的相关要求。Amazon Cognito 符合 HIPAA 要求,并满足 PCI DSS、SOC、ISO/IEC 27001、ISO/IEC 27017、ISO/IEC 27018 和 ISO 9001 标准。

Amazon Cognito 支持使用 AWS CloudTrail、Amazon CloudWatch 指标和 Amazon CloudWatch Logs Insights 进行监控。使用 CloudTrail,您可以捕获来自 Amazon Cognito 控制台的 API 调用以及 Amazon Cognito API 操作的代码调用。借助 CloudWatch 指标,您可以近乎实时地监控、报告事件并在发生事件时自动采取措施。借助 CloudWatch Logs Insights,您可以将 CloudTrail 配置为将事件发送至 CloudWatch,以监控 Amazon Cognito CloudTrail 日志文件。