Amazon Cognito 用户群体 - Amazon Cognito

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon Cognito 用户群体

Amazon Cognito 用户群体是用于 Web 和移动应用程序身份验证和授权的用户目录。从应用程序的角度来看,Amazon Cognito 用户群体是 OpenID Connect(OIDC)身份提供者(IdP)。用户群体为安全性、身份联合验证、应用程序集成和用户体验自定义添加了多层附加功能。

例如,您可以验证用户的会话是否来自可信来源。您可以将 Amazon Cognito 目录与外部身份提供者相结合。使用您的首选 AWS SDK,您可以选择最适合应用程序的 API 授权模型。您还可以添加用于修改或彻底修改 Amazon Cognito 原定设置行为的 AWS Lambda 函数。


      身份验证概述

功能

Amazon Cognito 用户群体具有以下功能。

注册

Amazon Cognito 用户群体具有用户驱动、管理员驱动和编程方法,可将用户配置文件添加到您的用户群体。Amazon Cognito 用户群体支持以下注册模式。您可以在应用程序中使用这些模型的任意组合。

重要

如果您在用户群体中激活用户注册,则互联网上的任何人都可以注册账户并登录您的应用程序。除非您开放您的应用程序供公开注册,否则不要在用户群体中启用自助注册。要更改此设置,请在用户池控制台的 “注册体验” 选项卡中更新自助服务注册,或者更新 CreateUserPool UpdateUserPoolAPI AllowAdminCreateUserOnly请求中的值。

有关可以在用户群体中设置的安全特征的信息,请参阅使用 Amazon Cognito 用户池安全功能

  1. 用户可以在应用程序中输入其信息,并创建用户群体原生的用户配置文件。您可以调用 API 注册操作在用户群体中注册用户。您可以向任何人开放这些注册操作,也可以使用客户端密钥或 AWS 凭证对他们进行授权。

  2. 您可以将用户重定向到第三方 IdP,他们可以授权该第三方 IdP 将其信息传递给 Amazon Cognito。Amazon Cognito 将 OIDC ID 令牌、OAuth 2.0 userInfo 数据和 SAML 2.0 断言处理到用户群体的用户配置文件中。您可以根据属性映射规则控制您希望 Amazon Cognito 接收的属性。

  3. 您可以跳过公共注册或联合身份验证注册,并根据自己的数据来源和模式来创建用户。在 Amazon Cognito 控制台或 API 中直接添加用户。从 CSV 文件导入用户。运行一个 just-in-time AWS Lambda函数,在现有目录中查找您的新用户,并根据现有数据填充他们的用户配置文件。

用户注册后,您可以将他们添加到 Amazon Cognito 在访问令牌和 ID 令牌中列出的组。在将 ID 令牌传递给身份池时,还可以将用户群体组链接到 IAM 角色。

登录

Amazon Cognito 可以是应用程序的独立用户目录和身份提供者(IdP)。您的用户可以使用由 Amazon Cognito 托管的 UI 登录,也可以通过 Amazon Cognito 用户群体 API 使用您自己的 UI 登录。前端自定义 UI 后面的应用程序层可以使用多种方法中的任何一种来授权后端的请求,以确认有效的请求。

要使用外部目录(可选择与 Amazon Cognito 内置的用户目录结合使用)登录用户,您可以添加以下集成。

  1. 使用 OAuth 2.0 社交登录进行登录并导入使用者用户数据。Amazon Cognito 支持通过 OAuth 2.0 登录 Google、Facebook、Amazon 和 Apple。

  2. 使用 SAML 和 OIDC 登录进行登录并导入企业用户数据。您也可以将 Amazon Cognito 配置为接受来自任何 SAML 或 OpenID Connect(OIDC)身份提供者(IdP)的声明。

  3. 将外部用户配置文件链接到原生用户配置文件。关联的用户可以使用第三方用户身份登录,并获得您分配给内置目录中的用户的访问权限。

M achine-to-machine 授权

有些会话不是 human-to-machine 互动。您可能需要一个能够通过自动化流程向 API 授权请求的服务账户。要生成访问令牌以通过 OAuth 2.0 范围进行 machine-to-machine 授权,您可以添加生成客户端凭证授权的应用程序客户端。

托管 UI

如果您不想构建用户界面,则可以向用户提供自定义 Amazon Cognito 托管 UI。托管 UI 是一组用于注册、登录、多重身份验证(MFA)和密码重置的网页。您可以将托管 UI 添加到现有域中,或者在 AWS 子域中使用前缀标识符。

安全性

您的本地用户可以通过 SMS 消息中的代码或用于生成多重身份验证(MFA)代码的应用程序,提供额外的身份验证要素。您可以构建在应用程序中设置和处理 MFA 的机制,也可以让托管 UI 管理 MFA。当您的用户从可信设备登录时,Amazon Cognito 用户群体可以绕过 MFA。

如果您不想最初就要求用户提供 MFA,则可以有条件地提出要求。借助高级安全功能,Amazon Cognito 可以检测潜在的恶意活动,并要求用户设置 MFA 或阻止登录。

如果流向用户群体的网络流量可能是恶意的,则可以对其进行监控并使用 AWS WAF Web ACL 采取措施。

自定义客户体验

在用户注册、登录或配置文件更新的大多数阶段,您可以自定义 Amazon Cognito 处理请求的方式。使用 Lambda 触发器,您可以根据自定义条件修改 ID 令牌或拒绝注册请求。您可以创建自己的自定义身份验证流程。

您可以上传自定义 CSS 和徽标,为用户提供熟悉的托管 UI 外观。

监控和分析

Amazon Cognito 用户群体将 API 请求(包括对托管 UI 的请求)记录到 AWS CloudTrail。您可以在 Amazon L CloudWatch ogs 中查看性能指标, CloudWatch 使用 Lambda 触发器将自定义日志推送到,并在 Service Quotas 控制台中监控 API 请求量。

还可以将 API 请求中的设备和会话数据记录到 Amazon Pinpoint 活动中。借助 Amazon Pinpoint,您可以根据对用户活动的分析,从应用程序发送推送通知。

Amazon Cognito 身份池集成

Amazon Cognito 的另一半是身份池。身份池提供凭证,用于授权和监控用户对 AWS 服务(例如 Amazon DynamoDB 或 Amazon S3)的 API 请求。您可以构建基于身份的访问策略,根据您在用户群体中对用户进行分类的方式来保护您的数据。身份池还可以接受来自各种身份提供者的令牌和 SAML 2.0 断言,与用户群体身份验证无关。