Amazon Cognito 用户池
Amazon Cognito 用户池是用于 Web 和移动应用程序身份验证和授权的用户目录。从应用程序的角度来看,Amazon Cognito 用户池是 OpenID Connect(OIDC)身份提供者(IdP)。用户池为安全性、身份联合验证、应用程序集成和用户体验自定义添加了多层附加功能。
例如,您可以验证用户的会话是否来自可信来源。您可以将 Amazon Cognito 目录与外部身份提供者相结合。使用您的首选 Amazon SDK,您可以选择最适合应用程序的 API 授权模型。您还可以添加用于修改或彻底修改 Amazon Cognito 原定设置行为的 Amazon Lambda 函数。
主题
功能
Amazon Cognito 用户池具有以下功能。
注册
Amazon Cognito 用户池具有用户驱动、管理员驱动和编程方法,可将用户配置文件添加到您的用户池。Amazon Cognito 用户池支持以下注册模式。您可以在应用程序中使用这些模型的任意组合。
重要
如果您在用户池中激活用户注册,则互联网上的任何人都可以注册账户并登录您的应用程序。除非您开放您的应用程序供公开注册,否则不要在用户池中启用自助注册。要更改此设置,请在用户池控制台中身份验证下的注册菜单中更新自助注册,或者在 CreateUserPool 或 UpdateUserPool API 请求中更新 AllowAdminCreateUserOnly 的值。
有关可以在用户池中设置的安全功能的信息,请参阅使用 Amazon Cognito 用户池安全功能。
-
用户可以在应用程序中输入其信息,并创建用户池原生的用户配置文件。您可以调用 API 注册操作在用户池中注册用户。您可以向任何人开放这些注册操作,也可以使用客户端密钥或 Amazon 凭证对他们进行授权。
-
您可以将用户重定向到第三方 IdP,他们可以授权该第三方 IdP 将其信息传递给 Amazon Cognito。Amazon Cognito 将 OIDC ID 令牌、OAuth 2.0
userInfo数据和 SAML 2.0 断言处理到用户池的用户配置文件中。您可以根据属性映射规则控制您希望 Amazon Cognito 接收的属性。 -
您可以跳过公共注册或联合身份验证注册,并根据自己的数据来源和模式来创建用户。在 Amazon Cognito 控制台或 API 中直接添加用户。从 CSV 文件导入用户。运行即时 Amazon Lambda 函数,此函数在现有目录中查找您的新用户,并从现有数据填充用户配置文件。
用户注册后,您可以将他们添加到 Amazon Cognito 在访问令牌和 ID 令牌中列出的组。在将 ID 令牌传递给身份池时,还可以将用户池组链接到 IAM 角色。
登录
Amazon Cognito 可以是应用程序的独立用户目录和身份提供者(IdP)。您的用户可以通过 Amazon Cognito 托管的托管登录页面进行登录,也可以通过采用 Amazon Cognito 用户池 API 构建的定制用户身份验证服务进行登录。定制前端背后的应用程序层可以使用多种方法中的任何一种来授权后端的请求,以确认有效的请求。
用户可以使用用户名和密码、通行密钥以及通过电子邮件或短信接收的一次性密码进行注册和登录。您可以提供以下功能:与外部用户目录整合登录、登录后的多重身份验证(MFA)、信任已记住的设备,以及您自行设计的自定义身份验证流程。
要使用外部目录(可选择与 Amazon Cognito 内置的用户目录结合使用)登录用户,您可以添加以下集成。
-
使用 OAuth 2.0 社交登录进行登录并导入客户用户数据。Amazon Cognito 支持通过 OAuth 2.0 登录 Google、Facebook、Amazon 和 Apple。
-
使用 SAML 和 OIDC 登录进行登录并导入工作和学校用户数据。您也可以将 Amazon Cognito 配置为接受来自任何 SAML 或 OpenID Connect(OIDC)身份提供者(IdP)的声明。
-
将外部用户配置文件链接到原生用户配置文件。关联的用户可以使用第三方用户身份登录,并获得您分配给内置目录中的用户的访问权限。
机器对机器授权
有些会话不是人机互动。您可能需要一个能够通过自动化流程向 API 授权请求的服务账户。要为具有 OAuth 2.0 范围的机器对机器授权生成访问令牌,您可以添加用于生成客户端凭证授权
相关主题
托管登录
如果您不想构建用户界面,则可以向用户提供自定义的托管登录页面。托管登录是一组用于注册、登录、多重身份验证(MFA)和密码重置的网页。您可以将托管登录添加到现有域中,或者在 Amazon 子域中使用前缀标识符。
安全性
您的本地用户可以通过短信或电子邮件消息中的代码,或用于生成多重身份验证(MFA)代码的应用程序,提供额外的身份验证因素。您可以构建在应用程序中设置和处理 MFA 的机制,也可以让托管登录来管理 MFA。当您的用户从可信设备登录时,Amazon Cognito 用户池可以绕过 MFA。
如果您不想最初就要求用户提供 MFA,则可以有条件地提出要求。借助自适应身份验证,Amazon Cognito 可以检测潜在的恶意活动,并要求用户设置 MFA 或阻止登录。
如果流向用户池的网络流量可能是恶意的,则可以对其进行监控并使用 Amazon WAF Web ACL 采取措施。
自定义客户体验
在用户注册、登录或配置文件更新的大多数阶段,您可以自定义 Amazon Cognito 处理请求的方式。使用 Lambda 触发器,您可以根据自定义条件修改 ID 令牌或拒绝注册请求。您可以创建自己的自定义身份验证流程。
您可以上传自定义 CSS 和徽标,为用户提供熟悉的托管登录外观。
监控和分析
Amazon Cognito 用户池将 API 请求(包括对托管登录的请求)记录到 Amazon CloudTrail。您可以在 Amazon CloudWatch Logs 中查看性能指标,使用 Lambda 触发器将自定义日志推送到 CloudWatch,监控电子邮件和短信传送情况,以及在服务配额控制台中监控 API 请求量。
借助增值版功能计划,您可以利用自动学习技术监控用户身份验证尝试中的泄露迹象,并立即对风险进行补救。这些高级安全功能还会将用户活动记录到您的用户池中,并可选择性地同时记录到 Amazon S3、CloudWatch Logs 或 Amazon Data Firehose。
还可以将 API 请求中的设备和会话数据记录到 Amazon Pinpoint 活动中。借助 Amazon Pinpoint,您可以根据对用户活动的分析,从应用程序发送推送通知。
相关主题
Amazon Cognito 身份池集成
Amazon Cognito 的另一半是身份池。身份池提供凭证,用于授权和监控用户对 Amazon Web Services 服务(例如 Amazon DynamoDB 或 Amazon S3)的 API 请求。您可以构建基于身份的访问策略,根据您在用户池中对用户进行分类的方式来保护您的数据。身份池还可以接受来自各种身份提供者的令牌和 SAML 2.0 断言,与用户池身份验证无关。